anchor.diff:    visitLet(Let node) {
       env.addVariableValue(
           node.variable, _evaluateSubexpression(node.variable.initializer));
  -    return node.body.accept(this);
  +    return _evaluateSubexpression(node.body);
     }
   
     visitVariableGet(VariableGet node) {
  
positive.code:     }
      final List<Constant> entries = new List<Constant>(node.expressions.length);
      for (int i = 0; i < node.expressions.length; ++i) {
        entries[i] = node.expressions[i].accept(this);
      }
      final DartType typeArgument = evaluateDartType(node, node.typeArgument);
      return canonicalize(new ListConstant(typeArgument, entries));
  
negative.code:   }
  
    visitAsExpression(AsExpression node) {
      final Constant constant = _evaluateSubexpression(node.operand);
      ensureIsSubtype(constant, evaluateDartType(node, node.type), node);
      return constant;
    }
  
    visitNot(Not node) {
      final Constant constant = _evaluateSubexpression(node.operand);
      if (constant is BoolConstant) {
        return constant == trueConstant ? falseConstant : trueConstant;
      }
  