/**
  * Construct a new instance of ResouceProperty
  * 
  * @param string               $name                  Name of the property
  * @param string               $mimeType              Mime type of the property
  * @param ResourcePropertyKind $kind                  The kind of property
  * @param ResourceType         &$propertyResourceType ResourceType of the 
  *                                                    property
  * 
  * @throws InvalidOperationException
  */
 public function __construct($name, $mimeType, $kind, ResourceType &$propertyResourceType)
 {
     if (!$this->_isValidResourcePropertyKind($kind)) {
         throw new \InvalidArgumentException(Messages::resourcePropertyInvalidKindParameter('$kind'));
     }
     if (!$this->_isResourceKindValidForPropertyKind($kind, $propertyResourceType->getResourceTypeKind())) {
         throw new \InvalidArgumentException(Messages::resourcePropertyPropertyKindAndResourceTypeKindMismatch('$kind', '$propertyResourceType'));
     }
     $this->_name = $name;
     $this->_mimeType = $mimeType;
     $this->_kind = $kind;
     $this->_propertyResourceType = $propertyResourceType;
 }