anchor.diff:      return sdk;
     }
     
  +  void setLibraries(MirrorSystem mirrorSystem) {
  +    if (mirrorSystem.libraries.values.isEmpty) {
  +      throw new UnsupportedError('No Library Mirrors.');
  +    } 
  +    this.libraries = mirrorSystem.libraries.values;
  +    documentLibraries();
  +  }
  +  
     /**
      * Analyzes set of libraries by getting a mirror system and triggers the 
      * documentation of the libraries. 
      */
  -  void analyze(List<String> args) {
  +  Future<MirrorSystem> getMirrorSystem(List<String> args) {
       var libraries = !parseSdk ? listLibraries(args) : listSdk();
       if (libraries.isEmpty) throw new StateError('No Libraries.');
       // DART_SDK should be set to the root of the SDK library. 
  
positive.code:       logger.info('SDK Root: ${sdkRoot}');
      }
      
      getMirrorSystem(libraries, sdkRoot, packageRoot: packageDir)
          .then((MirrorSystem mirrorSystem) {
            if (mirrorSystem.libraries.values.isEmpty) {
              throw new UnsupportedError('No Library Mirrors.');
            } 
            this.libraries = mirrorSystem.libraries.values;
            documentLibraries();
          });
    }
    
    /**
     * Analyzes set of libraries and provides a mirror system which can be used 
     * for static inspection of the source code.
     */
    Future<MirrorSystem> getMirrorSystem(List<String> libraries,
          String libraryRoot, {String packageRoot}) {
      SourceFileProvider provider = new SourceFileProvider();
      api.DiagnosticHandler diagnosticHandler =
  
negative.code:     includePrivate = argResults['include-private'];
      parseSdk = argResults['parse-sdk'];
      includeSdk = parseSdk || argResults['include-sdk'];
    }
    
    List<String> listLibraries(List<String> args) {
  