anchor.diff:      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);
  +}
  
positive.code:             } else if (result.outcome == Expectation.FAIL) {
                result.addLog("Negative test reported an error as expeceted.\n");
              }
              result = result.toNegativeTestResult();
            }
            if (!expectedOutcomes.contains(result.outcome)) {
              result.addLog("$sb");
  
negative.code:           }
            if (description.multitestExpectations != null) {
              if (isError(description.multitestExpectations)) {
                result = toNegativeTestResult(
                    result, description.multitestExpectations);
              }
            } else if (lastStep == lastStepRun &&
                description.shortName.endsWith("negative_test")) {
  