code: private function resolveComponentDependencyMap(array $component_dependency_map) : array
      {
          $resolved_module_list = [];
          $cyclic_reference_list = [];
  
          foreach($component_dependency_map as $component => $depended_components)
          {
              foreach($depended_components as $depended_component)
              {
                  $dependency_list = $this->getComponentDependencyList($depended_component, $component_dependency_map, $cyclic_reference_list);
  
                  foreach($dependency_list as $c)
                  {
                      if (!in_array($c, $resolved_module_list)) {
                          $resolved_module_list[] = $c;
                      }
                  }
                  if (!in_array($depended_component, $resolved_module_list)){
                      $resolved_module_list[] = $depended_component;
                  }
              }
  
              if (!in_array($component, $resolved_module_list)){
                  $resolved_module_list[] = $component;
              }
          }
  
          return $resolved_module_list;
      }
docs: @param array $component_dependency_map
  
  @return array
  
  @throws CyclicReferencedComponentException