anchor.diff:  
       if (target != null && DynamicInvoke.get(target)) {
         if (_inWhitelistCode(lhs)) {
  -        return _visit(rhs).toAssignExpression(_visit(lhs));
  +        var vars = <JS.MetaLetVariable, JS.Expression>{};
  +        var l = _visit(_bindValue(vars, 'l', target));
  +        var name = _emitMemberName(id.name);
  +        return new JS.MetaLet(vars, [
  +          js.call('(#[(#[dart._extensionType]) ? dartx[#] : #] = #)',
  +              [l, l, name, name, _visit(rhs)])
  +        ]);
         }
         return js.call('dart.dput(#, #, #)',
             [_visit(target), _emitMemberName(id.name), _visit(rhs)]);
  
positive.code:     var type = getStaticType(target);
      var memberName = _emitMemberName(name, unary: args.isEmpty, type: type);
      if (DynamicInvoke.get(target)) {
        // dynamic dispatch
        var dynamicHelper = const {'[]': 'dindex', '[]=': 'dsetindex'}[name];
        if (dynamicHelper != null) {
          return js.call(
              'dart.$dynamicHelper(#, #)', [_visit(target), _visitList(args)]);
        }
        if (_inWhitelistCode(target)) {
          return js
              .call('#.#(#)', [_visit(target), memberName, _visitList(args)]);
        } else {
          return js.call('dart.dsend(#, #, #)',
              [_visit(target), memberName, _visitList(args)]);
  
negative.code:     JS.Expression jsTarget = _visit(target);
      if (DynamicInvoke.get(target) || DynamicInvoke.get(node.methodName)) {
        if (_inWhitelistCode(target)) {
          var vars = <JS.MetaLetVariable, JS.Expression>{};
          var l = _visit(_bindValue(vars, 'l', target));
          jsTarget = new JS.MetaLet(vars, [
            js.call('(#[(#[dart._extensionType]) ? dartx[#] : #])',
                [l, l, memberName, memberName,])
          ]);
          if (typeArgs != null) jsTarget = new JS.Call(jsTarget, typeArgs);
          return new JS.Call(jsTarget, args);
        }
  