code: public function getOrganizedCompilers() {
          if(NULL === $this->orderedCompilers) {
              $depCollection = new DependencyCollection(false);
              $depCollection->setAcceptsDuplicates(false);
  
              foreach($this->compilers as $compiler) {
                  if($compiler instanceof CompilerInterface) {
                      $id = $compiler->getCompilerID();
                      $deps = $compiler->getDependsOnCompilerIDs();
                      if($deps)
                          $depCollection->add($id, $compiler, $deps);
                      else
                          $depCollection->add($id, $compiler);
                  }
                  elseif($compiler instanceof CompilerFactoryInterface) {
                      $compiler->registerCompilerInstances($depCollection, $this);
                  }
              }
  
              $this->orderedCompilers = $depCollection->getOrderedElements();
          }
          return $this->orderedCompilers;
      }
docs: Resolves the compilers against their dependencies
  
  @return array