public function setList($property, $data, $primary = null, $overwrite = true) {
		if ($primary !== true && (is_array($data) || $data instanceof Collection)) {
			if ($primary === null) {
				$primary = $this->getPrimary();
				
				if ($primary === null) {
					throw new Exception('Unable to determine a primary property');
				}
			}
			
			if ($overwrite) {
				foreach ($this->_data as &$item) {
					if (isset($data[$item[$primary]])) {
						$item[$property] = $data[$item[$primary]];
					}
				}
			} else {
				foreach ($this->_data as &$item) {
					if (isset($data[$item[$primary]]) && ! isset($item[$property])) {
						$item[$property] = $data[$item[$primary]];
					}
				}
			}
		} else {
			if ($overwrite) {
				foreach ($this->_data as &$item) {
					$item[$property] = $data;
				}
			} else {
				foreach ($this->_data as &$item) {
					if (! isset($item[$property])) {
						$item[$property] = $data;
					}
				}
			}
		}
		
		return $this;
	}