anchor.diff:    List<String> get diagnostics;
   
     bool get compilationSkipped;
  -
  -  String get json;
   }
   
   class CommandOutputImpl extends UniqueObject implements CommandOutput {
  
positive.code:   String _outputFile;
    bool _neverSkipCompilation;
    List<Uri> _bootstrapDependencies;
  
    Future writeCachedOutput(CommandOutput output) {
      var file = new io.File(TestUtils.cachedOutputFile(_outputFile));
      return file.writeAsString(output.json)
        .catchError((error) { 
          DebugLogger.warning("Could not write cached output: $error");
          return null;
        });
    }
  
    Future<CommandOutput> get cachedOutput {
      var file = new io.File(TestUtils.cachedOutputFile(_outputFile));
      return file.exists().then((exists) {
        if (exists) return file.readAsString().then((content) {
          return new CompilationCommandOutputImpl.fromJson(this, content);
        });;
      });
    }
  
    CompilationCommand._(String displayName,
                         this._outputFile,
  
negative.code:   }
  
    void _runCommand() {
      command.outputIsUpToDate.then((bool isUpToDate) {
        if (isUpToDate) {
          compilationSkipped = true;
          _commandComplete(0);
        } else {
          var processEnvironment = _createProcessEnvironment();
          Future processFuture =
  