if ($value !== NULL) {
	if (class_exists($this->dataType)) {
		if ($this->dataTypeClassSchema !== NULL) {
			if (is_numeric($value)) {
				$value = $this->findObjectByUid($value);
			} elseif (is_array($value)) {
				$value = $this->propertyMapper->map(array_keys($value), $value, $this->dataType);
			}
		} else {
			if (is_array($value)) {
				$value = $this->propertyMapper->map(array_keys($value), $value, $this->dataType);
			} else {
				// exception
			}
		}
		if (!($value instanceof $this->dataType)) {
			throw new Tx_Extbase_MVC_Exception_InvalidArgumentValue('The value must be of type "' . $this->dataType . '".', 1251730701);
		}
	}
	$this->value = $value;

	return $this;
}
