/**
  * @param $property Reflection_Property
  * @param $value    mixed
  * @param $preprop  string
  */
 public function __construct(Reflection_Property $property = null, $value = null, $preprop = null)
 {
     if (isset($property)) {
         $name = $property->pathAsField();
         if (strpos($name, '[')) {
             $preprop2 = lLastParse($name, '[');
             $preprop = $preprop ? $preprop . '[' . lParse($preprop2, '[') . '[' . rParse($preprop2, '[') : $preprop2;
             $name = lParse(rLastParse($name, '['), ']');
         }
         parent::__construct($name, $property->getType(), $value, $preprop);
         $this->null = $property->getAnnotation('null')->value;
         $this->property = $property;
         $this->readonly = $property->getListAnnotation('user')->has(User_Annotation::READONLY);
     } else {
         parent::__construct(null, null, $value, $preprop);
     }
 }