/**
  * @param $className
  * @param $source
  * @param $type
  * @return mixed
  */
 private function validateCommand($className, $source, $type)
 {
     if (!class_exists($className)) {
         return false;
     }
     $reflectionClass = new \ReflectionClass($className);
     if ($reflectionClass->isAbstract()) {
         return false;
     }
     if (!$reflectionClass->isSubclassOf('Drupal\\Console\\Command\\Command')) {
         /* TODO remove once Compiler pass is completed */
         if ($type === 'module' && $reflectionClass->isSubclassOf('Symfony\\Component\\Console\\Command\\Command')) {
             $command = $reflectionClass->newInstance();
             if (!$this->getDrupalHelper()->isInstalled()) {
                 $traits = class_uses($command);
                 if (in_array('Drupal\\Console\\Command\\Shared\\ContainerAwareCommandTrait', $traits)) {
                     return false;
                 }
             }
             if (method_exists($command, 'setTranslator')) {
                 $command->setTranslator($this->getTranslator());
             }
             return $command;
         }
         /* TODO remove once Compiler pass is completed */
         return false;
     }
     if (!$this->getDrupalHelper()->isInstalled() && $reflectionClass->isSubclassOf('Drupal\\Console\\Command\\ContainerAwareCommand')) {
         return false;
     }
     $dependencies = $this->commandDependencies->read($reflectionClass);
     if ($reflectionClass->getConstructor()->getNumberOfRequiredParameters() > 0) {
         if ($source != 'Console') {
             if ($type === 'module') {
                 $this->getTranslator()->addResourceTranslationsByModule($source);
             } elseif ($type === 'theme') {
                 $this->getTranslator()->addResourceTranslationsByTheme($source);
             }
         }
         $command = $reflectionClass->newInstance($this->getHelperSet());
     } else {
         $command = $reflectionClass->newInstance();
     }
     $this->missingDependencies[$command->getName()] = $dependencies;
     if ($type === 'module') {
         $command->setModule($source);
     } elseif ($type === 'theme') {
         $command->setTheme($source);
     }
     return $command;
 }
 /**
  * @param $className
  * @param $source
  * @param $type
  * @return mixed
  */
 private function validateCommand($className, $source, $type)
 {
     if (!class_exists($className)) {
         return false;
     }
     $reflectionClass = new \ReflectionClass($className);
     if ($reflectionClass->isAbstract()) {
         return false;
     }
     if (!$reflectionClass->isSubclassOf('Drupal\\Console\\Command\\Command')) {
         return false;
     }
     if (!$this->getDrupalHelper()->isInstalled() && $reflectionClass->isSubclassOf('Drupal\\Console\\Command\\ContainerAwareCommand')) {
         return false;
     }
     $dependencies = $this->commandDependencies->read($reflectionClass);
     if ($reflectionClass->getConstructor()->getNumberOfRequiredParameters() > 0) {
         if ($source != 'Console') {
             if ($type === 'module') {
                 $this->getTranslator()->addResourceTranslationsByModule($source);
             } elseif ($type === 'theme') {
                 $this->getTranslator()->addResourceTranslationsByTheme($source);
             }
         }
         $command = $reflectionClass->newInstance($this->getHelperSet());
     } else {
         $command = $reflectionClass->newInstance();
     }
     $this->missingDependencies[$command->getName()] = $dependencies;
     if ($type === 'module') {
         $command->setModule($source);
     } elseif ($type === 'theme') {
         $command->setTheme($source);
     }
     return $command;
 }