/**
  * @param string $currentClass
  *
  * @return array
  */
 private function getChildClasses($currentClass)
 {
     $classes = array();
     foreach ($this->driver->getAllClassNames() as $className) {
         if (!ClassType::from($className)->isSubclassOf($currentClass)) {
             continue;
         }
         $classes[] = $className;
     }
     return $classes;
 }
 /**
  * Forces the factory to load the metadata of all classes known to the underlying
  * mapping driver.
  * 
  * @return array The ClassMetadata instances of all mapped classes.
  */
 public function getAllMetadata()
 {
     if (!$this->initialized) {
         $this->initialize();
     }
     $metadata = array();
     foreach ($this->driver->getAllClassNames() as $className) {
         $metadata[] = $this->getMetadataFor($className);
     }
     return $metadata;
 }
 /**
  * Adds a default discriminator map if no one is given
  *
  * If an entity is of any inheritance type and does not contain a
  * discrimiator map, then the map is generated automatically. This process
  * is expensive computation wise.
  *
  * The automatically generated discriminator map contains the lowercase shortname of
  * each class as key.
  *
  * @param \Doctrine\ORM\Mapping\ClassMetadata $class
  */
 private function addDefaultDiscriminatorMap(ClassMetadata $class)
 {
     $allClasses = $this->driver->getAllClassNames();
     $subClassesMetadata = array();
     $fqcn = $class->getName();
     $map = array($this->getShortName($class->name) => $fqcn);
     $duplicates = array();
     foreach ($allClasses as $subClassCandidate) {
         if (is_subclass_of($subClassCandidate, $fqcn)) {
             $shortName = $this->getShortName($subClassCandidate);
             if (isset($map[$shortName])) {
                 $duplicates[] = $shortName;
             }
             $map[$shortName] = $subClassCandidate;
         }
     }
     if ($duplicates) {
         throw MappingException::duplicateDiscriminatorEntry($class->name, $duplicates, $map);
     }
     $class->setDiscriminatorMap($map);
 }