anchor.diff:  /**
    * A [TaskInput] whose value is a list of library sources exported directly
    * or indirectly by the target [Source].
  + *
  + * [resultDescriptor] is the type of result which should be produced for each
  + * target [Source].
    */
   class _ExportSourceClosureTaskInput extends TaskInputImpl<List<Source>> {
     final Source target;
  -
  -  _ExportSourceClosureTaskInput(this.target);
  +  final ResultDescriptor resultDescriptor;
  +
  +  _ExportSourceClosureTaskInput(this.target, this.resultDescriptor);
   
     @override
     TaskInputBuilder<List<Source>> createBuilder() =>
  -      new _SourceClosureTaskInputBuilder(target, _SourceClosureKind.EXPORT);
  +      new _SourceClosureTaskInputBuilder(
  +          target, _SourceClosureKind.EXPORT, resultDescriptor);
   }
   
   /**
    * A [TaskInput] whose value is a list of library sources imported or exported,
    * directly or indirectly by the target [Source].
  + *
  + * [resultDescriptor] is the type of result which should be produced for each
  + * target [Source].
    */
   class _ImportExportSourceClosureTaskInput extends TaskInputImpl<List<Source>> {
     final Source target;
  -
  -  _ImportExportSourceClosureTaskInput(this.target);
  +  final ResultDescriptor resultDescriptor;
  +
  +  _ImportExportSourceClosureTaskInput(this.target, this.resultDescriptor);
   
     @override
     TaskInputBuilder<List<Source>> createBuilder() =>
         new _SourceClosureTaskInputBuilder(
  -          target, _SourceClosureKind.IMPORT_EXPORT);
  +          target, _SourceClosureKind.IMPORT_EXPORT, resultDescriptor);
   }
   
   /**
    * A [TaskInput] whose value is a list of library sources imported directly
    * or indirectly by the target [Source].
  + *
  + * [resultDescriptor] is the type of result which should be produced for each
  + * target [Source].
    */
   class _ImportSourceClosureTaskInput extends TaskInputImpl<List<Source>> {
     final Source target;
  -
  -  _ImportSourceClosureTaskInput(this.target);
  +  final ResultDescriptor resultDescriptor;
  +
  +  _ImportSourceClosureTaskInput(this.target, this.resultDescriptor);
   
     @override
     TaskInputBuilder<List<Source>> createBuilder() =>
  -      new _SourceClosureTaskInputBuilder(target, _SourceClosureKind.IMPORT);
  +      new _SourceClosureTaskInputBuilder(
  +          target, _SourceClosureKind.IMPORT, resultDescriptor);
   }
   
   /**
  
positive.code:   static Map<String, TaskInput> buildInputs(AnalysisTarget target) {
      Source source = target;
      return <String, TaskInput>{
        IMPORT_INPUT: new _ImportSourceClosureTaskInput(source),
        EXPORT_INPUT: new _ExportSourceClosureTaskInput(source),
        IMPORT_EXPORT_INPUT: new _ImportExportSourceClosureTaskInput(source)
      };
    }
  
  
negative.code:   final Set<LibraryElement> _libraries = new HashSet<LibraryElement>();
    final List<Source> _newSources = <Source>[];
  
    @override
    final ResultDescriptor currentResult;
  
    Source currentTarget;
  
    _SourceClosureTaskInputBuilder(
        Source librarySource, this.kind, this.currentResult) {
      _newSources.add(librarySource);
    }
  
    @override
    void set currentValue(Object value) {
  