/** get the value of the property with the specified name
	 * @param string $propertyName the name by which a PntPropertyDescriptor can be obtained from ::getPropertyDescriptor
	 * @param PntSqlFilter $filter to apply, or null if unfiltered (currently only used by multi value properties)
	 * @return mixed dynamically typed by the PropertyDescriptor>>type
	 * @throws PntError if property missing, derivation fails, or anything an evetial getter method throws 
	 */
	function get($propertyName, $filter=true) {
		$prop = $this->getPropertyDescriptor($propertyName);
		if (!$prop) 
			throw new PntReflectionError($this->getClass()." property not found: '$propertyName'");
		
		return $prop->getValueFor($this, $filter);
	}