anchor.diff:      logs.add(log);
     }
   
  -  Result<O> toNegativeTestResult() {
  -    Expectation outcome = this.outcome;
  -    if (outcome == Expectation.PASS) {
  -      outcome = Expectation.FAIL;
  -    } else if (outcome == Expectation.FAIL) {
  -      outcome = Expectation.PASS;
  -    }
  +  Result<O> copyWithOutcome(Expectation outcome) {
       return new Result<O>(output, outcome, error, trace)
           ..logs.addAll(logs);
     }
  
positive.code:           }
            if (description.multitestExpectations != null) {
              if (isError(description.multitestExpectations)) {
                result = result.toNegativeTestResult();
              }
            } else if (lastStep == lastStepRun &&
                description.shortName.endsWith("negative_test")) {
  
negative.code:     return context.run(suite, selectors);
    });
  }
  
  Result toNegativeTestResult(Result result, [Set<String> expectations]) {
    Expectation outcome = result.outcome;
    if (outcome == Expectation.PASS) {
      if (expectations == null) {
        outcome = Expectation.FAIL;
      } else if (expectations.contains("compile-time error")) {
        outcome = Expectation.MISSING_COMPILETIME_ERROR;
      } else if (expectations.contains("runtime error") ||
          expectations.contains("dynamic type error")) {
        outcome = Expectation.MISSING_RUNTIME_ERROR;
      } else {
        outcome = Expectation.FAIL;
      }
    } else if (outcome == Expectation.FAIL) {
      outcome = Expectation.PASS;
    }
    return result.copyWithOutcome(outcome);
  }
  