/**
  *  Checa se existem erros de dependencia e retorna os modulos requeridos
  *
  * @param array $dependencias
  * @param array $explodedLoadedModules
  * @param array $explodedLoadedTypes
  * @return array|bool
  */
 public static function checkModuleDependencies(array $dependencias, array $explodedLoadedModules, array $explodedLoadedTypes)
 {
     $errors = [];
     foreach ($dependencias as $dependencia) {
         //Se for uma dependencia válida
         if (!empty($dependencia)) {
             //Dependencia quebrada em tipo e nome
             $dependenciaBroken = explode(Strings::MODULE_TYPE_NAME_SEPARATOR, $dependencia);
             //Tipo da dependencia
             $dependenciaType = $dependenciaBroken[0];
             //Verifica se é uma dependencia especifica
             if (array_key_exists(1, $dependenciaBroken)) {
                 //verifica se a dependencia esta carregada
                 if (!in_array($dependencia, $explodedLoadedModules)) {
                     //Adiciona o erro para o array de erros
                     $errors[] = Strings::moduleSpecificDependencyError($dependencia);
                 }
             } else {
                 //Verifica se é uma dependencia de tipo
                 //verifica se a dependencia esta carregada
                 if (!in_array($dependenciaType, $explodedLoadedTypes)) {
                     //Adiciona o erro para o array de erros
                     $errors[] = Strings::moduleTypeDependencyError($dependenciaType);
                 }
             }
         }
     }
     return !empty($errors) ? $errors : true;
 }