anchor.diff:  part of distributed_dart;
   
   /**
  - * Simple scanner implementation to scan for dependencies in Dart files.
  + * Simple scanner implementation to scan for dependencies in Dart files. The
  + * scanner will automatically stop when no more import statements is possible.
  + * More information can be found in the
  + * [Dart Language Specification](http://goo.gl/rhiyX).
    * 
  - * Highly inspired of the Dart projects own scanner.
  + * _Highly inspired by the Dart project's own 
  + * [scanner.dart](http://goo.gl/Ut5w7). The main difference is we don't need to
  + * scan for the whole language but only need a small subset. Also we want to
  + * make it easy to get details like import statements directly without need of
  + * parsing tokens._
    */
   class Scanner {
  -  List<int> bytes;
  -  int byteOffset;
  -  List<String> dependencies;
  +  List<int> _bytes;
  +  int _byteOffset;
  +  List<String> _dependencies;
     
     /* This is a primitive way to simulate token system. Because we only need to 
      * know if the next string is an import, export or part operation is should 
      * be enough.
  +   * 
  +   * If nextTokenIsImportant is true we need to take the next string. Also, if
  +   * we find a String and nextTokenIsImportant is false we can stop the scan.
      */
  -  bool nextTokenIsImportant;
  -  
  +  bool _nextTokenIsImportant;
  +  
  +  /**
  +   * Create new instance of [Scanner] to parse a instance of [Runes]. The 
  +   * instance of [Runes] should contain the content of a syntax valid Dart file.
  +   */
     Scanner(Runes sourcecode) {
  -    bytes = sourcecode.toList(growable: false);
  -  }
  -  
  -  int nextByte() => byteAt(++byteOffset);
  +    _bytes = sourcecode.toList(growable: false);
  +  }
  +  
  +  /**
  +   * Scan instance of [Runes] given on initialization. Returns a list of Strings
  +   * where each string is the URI from an import statement. Please notice the
  +   * possibility to get URI's like 'dart:async'.
  +   */
  +  List<String> getDependencies() {
  +    // Reset scanner instance (if someone want to call getDependencies() twice.
  +    _dependencies = new List<String>();
  +    _byteOffset = -1;
  +    _nextTokenIsImportant = false;
  +    
  +    _log("Running _scan()");
  +    int next = _advance();
  +    while (!identical(next, _U.$EOF)) {
  +      next = _bigSwitch(next);
  +      _log("bigSwich output = $next");
  +    }
  +    
  +    return _dependencies;
  +  }
  +  
  +  int _nextByte() => _byteAt(++_byteOffset);
   
  -  int peek() => byteAt(byteOffset + 1);
  +  int _peek() => _byteAt(_byteOffset + 1);
   
  -  int byteAt(int index) => bytes[index];
  -  
  -  int advance() => bytes[++byteOffset];
  -  
  -  List<String> getDependencies() {
  -    // Reset scanner instance
  -    dependencies = new List<String>();
  -    byteOffset = -1;
  -    nextTokenIsImportant = false;
  -    
  -    _log("Running scan()");
  -    int next = advance();
  -    while (!identical(next, _U.$EOF)) {
  -      next = bigSwitch(next);
  -      _log("bigSwich output = $next");
  -    }
  -    
  -    return dependencies;
  -  }
  -  
  -  int bigSwitch(int next) {
  -    _log("Running bigSwitch($next)");
  +  int _byteAt(int index) => _bytes[index];
  +  
  +  int _advance() => _bytes[++_byteOffset];
  +  
  +  int _bigSwitch(int next) {
  +    _log("Running _bigSwitch($next)");
       if (identical(next, _U.$SPACE) || identical(next, _U.$TAB)
           || identical(next, _U.$LF) || identical(next, _U.$CR)) {
         // Do nothing as we don't collect white space.
  -      next = advance();
  +      next = _advance();
         while (identical(next, _U.$SPACE)) {
  -        next = advance();
  +        next = _advance();
         }
         return next;
       }
  
positive.code:        * finish.
         */
        _log("'$keyword' is an identifier!");
        _log("     and nextTokenIsImportant = $nextTokenIsImportant");
        
        if (nextTokenIsImportant) {
          return next;
        } else {
          return _U.$EOF;  
  
negative.code:       
        _log("'$keyword' is a keyword!");
        
        _nextTokenIsImportant = true;
        return next;
      } else {
        /* This is not a keyword but an identifier. Because identifiers is not
  