protected static function loadSubClassesMap()
 {
     self::$_classInheritMap = array();
     if (!file_exists(self::$_classInheritMapLocation)) {
         foreach (self::$_classMap as $class) {
             if (!class_exists($class)) {
                 continue;
             }
             $parentClass = get_parent_class($class);
             while ($parentClass) {
                 if (!isset(self::$_classInheritMap[$parentClass])) {
                     self::$_classInheritMap[$parentClass] = array();
                 }
                 self::$_classInheritMap[$parentClass][] = $class;
                 $parentClass = get_parent_class($parentClass);
             }
         }
         file_put_contents(self::$_classInheritMapLocation, serialize(self::$_classInheritMap));
     } else {
         self::$_classInheritMap = unserialize(file_get_contents(self::$_classInheritMapLocation));
     }
 }