/**
  * Include everything, so that actually *all* classes are available and
  * build a map of classes and their subclasses
  * 
  * @param $classManifest An array of all Sapphire classes; keys are class names and values are filenames
  *
  * @return array Returns an array that holds all class relevant
  *               information.
  */
 private static function allClasses($classManifest)
 {
     self::$classArray = array();
     self::$extendsArray = array();
     self::$implementsArray = array();
     // Include everything, so we actually have *all* classes
     foreach ($classManifest as $file) {
         $b = basename($file);
         if ($b != 'cli-script.php' && $b != 'main.php') {
             self::parse_file($file);
         }
     }
     $allClasses["parents"] = self::find_parents();
     $allClasses["children"] = self::find_children();
     $allClasses["implementors"] = self::$implementsArray;
     foreach (self::$classArray as $class => $info) {
         $allClasses['exists'][$class] = $class;
     }
     // Build a map of classes and their subclasses
     $_classes = get_declared_classes();
     foreach ($_classes as $class) {
         $allClasses['exists'][$class] = $class;
         foreach ($_classes as $subclass) {
             if (is_subclass_of($class, $subclass)) {
                 $allClasses['parents'][$class][$subclass] = $subclass;
             }
             if (is_subclass_of($subclass, $class)) {
                 $allClasses['children'][$class][$subclass] = $subclass;
             }
         }
     }
     return $allClasses;
 }
 /**
  * Include everything, so that actually *all* classes are available and
  * build a map of classes and their subclasses
  * 
  * @param $classManifest An array of all Sapphire classes; keys are class names and values are filenames
  *
  * @return array Returns an array that holds all class relevant
  *               information.
  */
 private static function allClasses($classManifest)
 {
     self::$classArray = array();
     self::$extendsArray = array();
     self::$implementsArray = array();
     // Include everything, so we actually have *all* classes
     foreach ($classManifest as $file) {
         $b = basename($file);
         if ($b != 'cli-script.php' && $b != 'main.php') {
             self::parse_file($file);
         }
     }
     $allClasses["parents"] = self::find_parents();
     $allClasses["children"] = self::find_children();
     $allClasses["implementors"] = self::$implementsArray;
     foreach (self::$classArray as $class => $info) {
         $allClasses['exists'][$class] = $class;
         // Class names are converted to lowercase for lookup to adhere to PHP's case-insensitive
         // way of dealing with them.
         $allClasses['file'][strtolower($class)] = $info['file'];
     }
     // Build a map of classes and their subclasses
     $_classes = get_declared_classes();
     foreach ($_classes as $class) {
         $allClasses['exists'][$class] = $class;
         foreach ($_classes as $subclass) {
             if (is_subclass_of($class, $subclass)) {
                 $allClasses['parents'][$class][$subclass] = $subclass;
             }
             if (is_subclass_of($subclass, $class)) {
                 $allClasses['children'][$class][$subclass] = $subclass;
             }
         }
     }
     return $allClasses;
 }