anchor.diff:    }
   }
   
  -// Step that invokes dart2js on the main module by providing the .dill files of
  -// all transitive modules as inputs.
  -class CompileFromDillStep implements IOModularStep {
  -  @override
  -  List<DataId> get resultData => const [jsId];
  +// Step that invokes the dart2js global analysis on the main module by providing
  +// the .dill files of all transitive modules as inputs.
  +class GlobalAnalysisStep implements IOModularStep {
  +  @override
  +  List<DataId> get resultData => const [globalDataId, updatedDillId];
   
     @override
     bool get needsSources => false;
  
positive.code: }
  
  const dillId = const DataId("dill");
  const jsId = const DataId("js");
  const txtId = const DataId("txt");
  
  
negative.code:   @override
    Future<void> execute(
        Module module, Uri root, ModuleDataToRelativeUri toUri) async {
      if (_options.verbose) print("step: dart2js global analysis on $module");
      Set<Module> transitiveDependencies = computeTransitiveDependencies(module);
      Iterable<String> dillDependencies =
          transitiveDependencies.map((m) => '${toUri(m, dillId)}');
  