/**
  * @see AbstractObject::models
  */
 protected function modelsMagicProperty($function, $value)
 {
     switch ($function) {
         case 'get':
             $models = array();
             $rels_models = $this->relationships->get(FEDORA_MODEL_URI, 'hasModel');
             foreach ($rels_models as $model) {
                 $models[] = $model['object']['value'];
             }
             if (!in_array('fedora-system:FedoraObject-3.0', $models)) {
                 $models[] = 'fedora-system:FedoraObject-3.0';
             }
             return $models;
             break;
         case 'isset':
             $rels_models = $this->relationships->get(FEDORA_MODEL_URI, 'hasModel');
             return count($rels_models) > 0;
             break;
         case 'set':
             if (!is_array($value)) {
                 $models = array($value);
             } else {
                 $models = $value;
             }
             if (!in_array('fedora-system:FedoraObject-3.0', $models)) {
                 $models[] = 'fedora-system:FedoraObject-3.0';
             }
             foreach ($models as $model) {
                 if (!in_array($model, $this->models)) {
                     $this->relationships->add(FEDORA_MODEL_URI, 'hasModel', $model);
                 }
             }
             break;
         case 'unset':
             $this->relationships->remove(FEDORA_MODEL_URI, 'hasModel');
             break;
     }
 }