anchor.diff:  
     void doLogicalExpression(Token token) {
       Expression argument = popForValue();
  -    Expression receiver = popForValue();
  +    Expression receiver = pop();
       var logicalExpression =
           new ShadowLogicalExpression(receiver, token.stringValue, argument);
       typePromoter.exitLogicalExpression(argument, logicalExpression);
  
positive.code:   void endIfStatement(Token ifToken, Token elseToken) {
      Statement elsePart = popStatementIfNotNull(elseToken);
      Statement thenPart = popStatement();
      Expression condition = popForValue();
      typePromoter.exitConditional();
      push(new ShadowIfStatement(condition, thenPart, elsePart)
        ..fileOffset = ifToken.charOffset);
  
negative.code:   void endConditionalExpression(Token question, Token colon) {
      debugEvent("ConditionalExpression");
      Expression elseExpression = popForValue();
      Expression thenExpression = pop();
      Expression condition = pop();
      typePromoter.exitConditional();
      push(new ShadowConditionalExpression(
          condition, thenExpression, elseExpression));
  