anchor.diff:    @override
     void endLabeledStatement(int labelCount) {
       debugEvent("LabeledStatement");
  -    kernel.Statement statement = popStatement();
  +    kernel.Statement statement = toKernelStatement(popStatement());
       LabelTarget target = pop();
       exitLocalScope();
       if (target.breakTarget.hasUsers) {
  
positive.code: 
    @override
    void endTryStatement(int catchCount, Token tryKeyword, Token finallyKeyword) {
      kernel.Statement finallyBlock = popStatementIfNotNull(finallyKeyword);
      List<Catch> catches = popList(catchCount);
      kernel.Statement tryBlock = popStatement();
      if (compileTimeErrorInTry == null) {
        if (catches != null) {
          tryBlock = new ShadowTryCatch(tryBlock, catches);
  
negative.code: 
    @override
    void endIfStatement(Token ifToken, Token elseToken) {
      kernel.Statement elsePart =
          toKernelStatement(popStatementIfNotNull(elseToken));
      kernel.Statement thenPart = toKernelStatement(popStatement());
      Expression condition = pop();
      typePromoter.exitConditional();
      push(
  