anchor.diff:          // For now ensure original order of libraries to produce bit-perfect
           // output.
           libraries.sort((a, b) {
  -          int aOrder = importUriToOrder[a.importUri];
  -          int bOrder = importUriToOrder[b.importUri];
  +          int aOrder = data.importUriToOrder[a.importUri];
  +          int bOrder = data.importUriToOrder[b.importUri];
             if (aOrder != null && bOrder != null) return aOrder - bOrder;
             if (aOrder != null) return -1;
             if (bOrder != null) return 1;
  
positive.code: 
        // This is the incremental program.
        Procedure mainMethod = programWithDill == null
            ? userLoadedUriMain
            : programWithDill.mainMethod;
        return new Program(libraries: libraries, uriToSource: uriToSource)
          ..mainMethod = mainMethod;
      });
    }
  
    List<LibraryBuilder> computeReusedLibraries(Iterable<Uri> invalidatedUris) {
  
negative.code:     invalidatedUris.add(uri);
    }
  }
  
  class IncrementalCompilerData {
    bool includeUserLoadedLibraries;
    Map<Uri, Source> uriToSource;
    Map<Uri, int> importUriToOrder;
    Procedure userLoadedUriMain;
    Program program;
  
    IncrementalCompilerData() {
      reset();
    }
  
    reset() {
      includeUserLoadedLibraries = false;
      uriToSource = {};
      importUriToOrder = {};
      userLoadedUriMain = null;
      program = null;
    }
  }
  