anchor.diff:              // TODO(johnniwinther): This should call [_evaluateSubexpression].
               : _evaluateNullableSubexpression(parameter.initializer);
           if (value is AbortConstant) return value;
  -        env.addVariableValue(parameter, value);
  +        env.updateVariableValue(parameter, value);
         }
         for (final VariableDeclaration parameter in function.namedParameters) {
           final Constant value = namedArguments[parameter.name] ??
               // TODO(johnniwinther): This should call [_evaluateSubexpression].
               _evaluateNullableSubexpression(parameter.initializer);
           if (value is AbortConstant) return value;
  -        env.addVariableValue(parameter, value);
  +        env.updateVariableValue(parameter, value);
         }
   
         // Step 2) Run all initializers (including super calls) with environment
  
positive.code:   Iterable<UnevaluatedConstant> get unevaluatedUnreadConstants {
      if (_unreadUnevaluatedVariables.isEmpty) return const [];
      return _unreadUnevaluatedVariables.map<UnevaluatedConstant>(
          (VariableDeclaration variable) => _variables[variable]);
    }
  
    DartType substituteType(DartType type) {
  
negative.code:   Constant visitLet(Let node) {
      Constant value = _evaluateSubexpression(node.variable.initializer);
      if (value is AbortConstant) return value;
      env.updateVariableValue(node.variable, value);
      return _evaluateSubexpression(node.body);
    }
  
  