public function getValue() {
		
		if ($this->propertyDescriptor->isPublicFieldProperty()) {
			// Let's try to see if it is a "value":
			$param = $this->moufManager->getParameter($this->instanceDescriptor->getIdentifierName(), $this->name);
			if ($param !== null) {
				return $param;
			}
			
			$instanceName = $this->moufManager->getBoundComponentsOnProperty($this->instanceDescriptor->getIdentifierName(), $this->name);

			return $this->toInstanceDescriptor($instanceName);
		} elseif ($this->propertyDescriptor->isSetterProperty()) {
			// Let's try to see if it is a "value":
			$param = $this->moufManager->getParameterForSetter($this->instanceDescriptor->getIdentifierName(), $this->name);
			if ($param !== null) {
				return $param;
			}
			
			$instanceName = $this->moufManager->getBoundComponentsOnSetter($this->instanceDescriptor->getIdentifierName(), $this->name);

			return $this->toInstanceDescriptor($instanceName);
		} elseif ($this->propertyDescriptor->isConstructor()) {
			// Let's try to see if it is a "value":
			$argumentType = $this->moufManager->isConstructorParameterObjectOrPrimitive($this->instanceDescriptor->getIdentifierName(), $this->propertyDescriptor->getParameterIndex());
			$param = $this->moufManager->getParameterForConstructor($this->instanceDescriptor->getIdentifierName(), $this->propertyDescriptor->getParameterIndex());
				
			if ($argumentType == "primitive") {
				return $param;
			} elseif ($argumentType == "object") {
				return $this->toInstanceDescriptor($param);
			} else {
				// Not set: return null
				return null;
			}
			
		} else {
			throw new MoufException("Unsupported property type: it is not a public field nor a setter nor a constructor...");
		}
		
	
	}