/**
  * Register a __ConfigurationProperty in cache for quickly access without know the route/level where the property
  *
  * @param __ConfigurationProperty $property
  */
 protected function registerProperty(__ConfigurationProperty &$property)
 {
     $property_name = $property->getName();
     if (!key_exists($property_name, $this->_registered_properties)) {
         $this->_registered_properties[$property->getName()] =& $property;
         __ConfigurationValueResolver::addSettingValue($property->getName(), $property->getContent());
     } else {
         if (!is_array($this->_registered_properties[$property_name])) {
             $stored_property =& $this->_registered_properties[$property_name];
             unset($this->_registered_properties[$property_name]);
             $this->_registered_properties[$property_name] = array($stored_property);
         }
         $this->_registered_properties[$property_name][] =& $property;
     }
 }