anchor.diff:        // statements.
         // TODO(lrn): Stop performing tests when all expressions are compile-time
         // constant strings or integers.
  -      handleIf(() { buildTests(labelsAndCases); }, (){}, null);
  +      handleIf(node, () { buildTests(labelsAndCases); }, (){}, null);
         visit(node.statements);
       } else {
         if (cases.tail.isEmpty()) {
  -        handleIf(() { buildTests(labelsAndCases); },
  +        handleIf(node,
  +                 () { buildTests(labelsAndCases); },
                    () { visit(node.statements); },
                    null);
         } else {
  -        handleIf(() { buildTests(labelsAndCases); },
  +        handleIf(node,
  +                 () { buildTests(labelsAndCases); },
                    () { visitStatementsAndAbort(); },
                    () { buildSwitchCases(cases.tail, expression,
                                          encounteredCaseTypes); });
  
positive.code:     return instruction;
    }
  }
  
negative.code:       void right() {
          buildTests(tail);
        }
        handleLogicalAndOr(remainingCases.head, left, right, isAnd: false);
      }
  
      if (node.isDefaultCase) {
  