protected function _getForeignClassForProperty($property_name)
 {
     if (!($foreign_type = B2DB::getCachedClassPropertyForeignClass(get_class($this), $property_name))) {
         $reflection = new ReflectionProperty(get_class($this), $property_name);
         $docblock = $reflection->getDocComment();
         if ($docblock) {
             $has_b2dbtype = strpos($docblock, '@Class', 3);
             $no_autopopulate = strpos($docblock, '@NoAutoPopulation', 3);
             if ($has_b2dbtype !== false && !$no_autopopulate) {
                 $type_details = substr($docblock, $has_b2dbtype + 7);
                 $type_details = explode(' ', $type_details);
                 $foreign_type = trim($type_details[0]);
                 B2DB::addCachedClassPropertyForeignClass(get_class($this), $property_name, $foreign_type);
             }
         }
     }
     return $foreign_type;
 }