anchor.diff:        targetType = target.accept(this);
       } else {
         _checkNonObjectMember(propertyName.name); // TODO(paulberry)
  -      targetType = _handleAssignment(_notNullType, target);
  +      targetType = _handleAssignment(target, _notNullType);
       }
       var callee = propertyName.staticElement;
       if (callee == null) {
  
positive.code:   /// Creates the necessary constraint(s) for an assignment of the given
    /// [expression] to a destination whose type is [destinationType].
    DecoratedType _handleAssignment(
        DecoratedType destinationType, Expression expression,
        {bool canInsertChecks = true}) {
      var sourceType = expression.accept(this);
      if (sourceType == null) {
  
negative.code:     }
      var calleeType = getOrComputeElementType(callee, targetType: targetType);
      // TODO(paulberry): substitute if necessary
      _handleAssignment(node.index, calleeType.positionalParameters[0]);
      if (node.inSetterContext()) {
        return calleeType.positionalParameters[1];
      } else {
  