public function &__get($name)
 {
     // key exists in rec_data?
     if (array_key_exists($name, $this->removeStubs($name)->rec_data)) {
         return $this->rec_data[$name];
     }
     // key is not removed and exists in persistent data?
     if (!isset($this->removed[$name]) && $this->persistent->keyExists($name)) {
         $v = $this->persistent[$name];
         if ($v instanceof parent) {
             $this->rec_data[$name] = new self($v);
             return $this->rec_data[$name];
         }
         return $v;
     }
     // otherwise, return parent stub
     return parent::__get($name);
 }