private function getDirectInherits($class, AstMap $astMap)
 {
     return array_map(function (AstMap\AstInherit $v) {
         return $v->__toString();
     }, array_filter($astMap->getClassInherits($class), function (AstMap\AstInheritInterface $v) {
         return $v instanceof AstMap\AstInherit;
     }));
 }
 public function satisfy(array $configuration, AstClassReferenceInterface $abstractClassReference, AstMap $astMap, CollectorFactory $collectorFactory, AstParserInterface $astParser)
 {
     $classInherits = $astMap->getClassInherits($abstractClassReference->getClassName());
     foreach ($classInherits as $classInherit) {
         if (count($classInherit->getPath()) >= $configuration['level']) {
             return true;
         }
     }
     return false;
 }
 public function applyDependencies(AstParserInterface $astParser, AstMap $astMap, DependencyResult $dependencyResult)
 {
     foreach ($astMap->getAstClassReferences() as $classReference) {
         foreach ($astMap->getClassInherits($classReference->getClassName()) as $inherit) {
             if ($inherit instanceof FlattenAstInherit) {
                 continue;
             }
             $dependencyResult->addDependency(new Dependency($classReference->getClassName(), $inherit->getLine(), $inherit->getClassName()));
         }
     }
 }
 public function flattenDependencies(AstMap $astMap, DependencyResult $dependencyResult)
 {
     foreach ($astMap->getAstClassReferences() as $classReference) {
         foreach ($astMap->getClassInherits($classReference->getClassName()) as $inherit) {
             if (!$inherit instanceof FlattenAstInherit) {
                 continue;
             }
             foreach ($dependencyResult->getDependenciesByClass($inherit->getClassName()) as $dep) {
                 $dependencyResult->addInheritDependency(new InheritDependency($classReference->getClassName(), $dep->getClassB(), $dep, $inherit));
             }
         }
     }
 }