anchor.diff:        // TODO(paulberry): experiment to see if dynamic dispatch would be better,
         // so that the type hierarchy will be simpler (which may speed up "is"
         // checks).
  -      return expression.inferredType =
  -          expression.infer(this, factory, typeContext);
  +      expression.infer(this, factory, typeContext);
  +      return expression.inferredType;
       } else {
         // Encountered an expression type for which type inference is not yet
         // implemented, so just infer dynamic for now.
  
positive.code:   }
  
    @override
    DartType infer<Expression, Statement, Initializer, Type>(
        ShadowTypeInferrer inferrer,
        Factory<Expression, Statement, Initializer, Type> factory,
        DartType typeContext) {
      var lhsType = inferrer.inferExpression(
          factory, variable.initializer, typeContext, true);
      if (inferrer.strongMode) {
        variable.type = lhsType;
      }
      Let section = body;
      while (true) {
  
negative.code:   ExpressionJudgment get judgment => operand;
  
    @override
    Expression infer<Expression, Statement, Initializer, Type>(
        ShadowTypeInferrer inferrer,
        Factory<Expression, Statement, Initializer, Type> factory,
        DartType typeContext) {
  