anchor.diff:  // for details. All rights reserved. Use of this source code is governed by a
   // BSD-style license that can be found in the LICENSE file.
   
  +import 'dart:async';
   import 'dart:io';
   
   import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
  
positive.code:     var library = context.computeLibraryElement(source);
      for (var entry in library.imports) {
        if (entry.uri == null) continue;
        transitiveFiles(results, context, entry.uri, entryDir);
      }
      for (var entry in library.exports) {
        transitiveFiles(results, context, entry.uri, entryDir);
      }
      for (var part in library.parts) {
        results.add(canonicalize(part.uri, entryDir));
      }
    }
  }
  
negative.code:   return sourceUri.toString();
  }
  
  void transitiveFiles(AnalysisContext context, String entryPoint, String root) {
    entryPoint = canonicalize(entryPoint, root);
    if (entryPoint.startsWith('dart:')) return;
    var entryDir = path.dirname(entryPoint);
    if (processFile(entryPoint)) {
      // Process this
      var source = context.sourceFactory.forUri(entryPoint);
      if (source == null) {
  