anchor.diff:            index = pop();
           }
   
  -        HInvokeDynamicMethod getterInstruction = buildInvokeDynamic(
  +        pushInvokeDynamic(
               node,
               elements.getGetterSelectorInComplexSendSet(node),
               [receiver, index]);
  -        add(getterInstruction);
  +        HInstruction getterInstruction = pop();
   
           handleComplexOperatorSend(node, getterInstruction, arguments);
           HInstruction value = pop();
   
  -        HInvokeDynamicMethod assign = buildInvokeDynamic(
  +        pushInvokeDynamic(
               node, elements.getSelector(node), [receiver, index, value]);
  -        add(assign);
  +        pop();
   
           if (node.isPostfix) {
             stack.add(getterInstruction);
  
positive.code:         return;
      }
  
      pushWithPosition(
            buildInvokeDynamic(send, selector, [left, right]),
            op);
      if (op.source.stringValue == '!=') {
        pushWithPosition(new HNot(popBoolified()), op);
      }
  
negative.code:     if (canBeInlined == false) return false;
      if (!selector.applies(function, compiler)) return false;
  
      // Don't inline operator== methods if the parameter can be null.
      if (element.name == const SourceString('==')) {
        if (element.getEnclosingClass() != compiler.objectClass
            && providedArguments[1].canBeNull()) {
          return false;
        }
      }
  
      FunctionExpression functionExpression = function.parseNode(compiler);
      TreeElements newElements =
          compiler.enqueuer.resolution.getCachedElements(function);
  