anchor.diff:        // TODO(paulberry): get the actual callee function type from the inference
         // engine
         var calleeType = const DynamicType();
  -      _types[_deferredTypeSlots.removeLast()] = calleeType;
  +      _replaceType(calleeType);
       }
       _recordType(inferredType, arguments.fileOffset);
       super.genericExpressionExit("methodInvocation", expression, inferredType);
  
positive.code:     return slot;
    }
  
    void _replaceType(DartType type, int offset) {
      _types[_deferredTypeSlots.removeLast()] = type;
    }
  }
  
negative.code:     // TODO(paulberry): get the actual callee function type from the inference
      // engine
      var calleeType = const DynamicType();
      _replaceType(calleeType);
      _recordType(inferredType, expression.arguments.fileOffset);
      super.genericExpressionExit("staticInvocation", expression, inferredType);
    }
  
    @override
    void variableDeclarationEnter(VariableDeclaration statement) {
      _deferType(statement.fileOffset);
      super.variableDeclarationEnter(statement);
    }
  
    @override
    void variableDeclarationExit(
        VariableDeclaration statement, DartType inferredType) {
      _replaceType(inferredType);
      super.variableDeclarationExit(statement, inferredType);
    }
  
    /// Record `null` as the type at the given [offset], and put the current
    /// slot into the [_deferredTypeSlots] stack.
    void _deferType(int offset) {
      int slot = _recordType(null, offset);
      _deferredTypeSlots.add(slot);
    }
  
    int _recordType(DartType type, int offset) {
  