public function resolveDependencies($module){
        
        $version = $this->getModuleVersion($module);
        
        if(null === $version){
            throw new \Exception(sprintf(
                "Unable to resolve dependencies for module '%s'. Module definitions are missing or incomplete.", 
                $module
            ));
        }
        
        $resolved = new \ArrayObject();
        $this->resolveDepsRecursive($module, $version, $resolved);
        
        // Remove dependency to module itself if resolved version 
        // is less than or equal to current version.
        if($resolved->offsetExists($module) && SoftwareVersion::compare($resolved[$module], $version) <= 0){
            unset($resolved[$module]);
        }

        return $resolved;
    }
public function resolveDependencies($module){
        
        $version = $this->getModuleVersion($module);
        
        if(null === $version){
            throw new \Exception(sprintf(
                "Unable to resolve dependencies for module '%s'. Module definitions are missing or incomplete.", 
                $module
            ));
        }
        
        $resolved = new \ArrayObject();
        $this->resolveDepsRecursive($module, $version, $resolved);
        
        // Remove dependency to module itself if resolved version 
        // is less than or equal to current version.
        if($resolved->offsetExists($module) && SoftwareVersion::compare($resolved[$module], $version) <= 0){
            unset($resolved[$module]);
        }

        return $resolved;
    }
public function resolveDependencies ( $ module ) { $ version = $ this -> getModuleVersion ( $ module ) ; if ( null === $ version ) { throw new \ Exception ( sprintf ( "Unable to resolve dependencies for module '%s'. Module definitions are missing or incomplete." , $ module ) ) ; } $ resolved = new \ ArrayObject ( ) ; $ this -> resolveDepsRecursive ( $ module , $ version , $ resolved ) ; // Remove dependency to module itself if resolved version  // is less than or equal to current version. if ( $ resolved -> offsetExists ( $ module ) && SoftwareVersion :: compare ( $ resolved [ $ module ] , $ version ) <= 0 ) { unset ( $ resolved [ $ module ] ) ; } return $ resolved ; }
Resolve module dependencies, recursively

This method returns an array with dependent module names
as keys and versions as values. There may also be a
dependency back to module itself with greater version
number.

Example of dependency tree:
- A 1.0
- C 1.0
- A 1.1
- D 2.0
- E 1.0
- B 1.0
- B 1.1

Resolved dependencies:
A : 1.1
C : 1.0
E : 1.0
B : 1.1
D : 2.0

@param string $module
@throws \Exception
@return ArrayObject
Resolve module dependencies recursively