anchor.diff:  
             case ONE_EXPRESSION:
             case ONE_STATEMENT:
  -            buffer.add(' else ');
  -            visitWithoutIndent(elseGraph);
  +            if (thenGraphHasSuccessor) {
  +              buffer.add(' else ');
  +              visitWithoutIndent(elseGraph);
  +            } else {
  +              buffer.add('\n');
  +              generateStatements(elseGraph);
  +            }
               break;
   
             case MULTIPLE_STATEMENTS:
  -            buffer.add(' else ');
  -            visitWithIndent(elseGraph);
  -            buffer.add('\n');
  +            if (thenGraphHasSuccessor) {
  +              buffer.add(' else ');
  +              visitWithIndent(elseGraph);
  +              buffer.add('\n');
  +            } else {
  +              buffer.add('\n');
  +              generateStatements(elseGraph);
  +            }
               break;
           }
           break;
  
positive.code:       endExpression(operatorPrecedence.precedence);
      }
  
      switch (thenKind) {
        case EMPTY:
          switch (elseKind) {
  
negative.code:             // TODO(ngeoffray): Generate a conditional.
              emitIf();
              visitWithoutIndent(thenGraph);
              if (thenGraphHasSuccessor) {
                addIndented('else ');
                visitWithoutIndent(elseGraph);
              } else {
                generateStatements(elseGraph);
              }
              break;
  
            case MULTIPLE_STATEMENTS:
              emitIf();
              visitWithoutIndent(thenGraph);
              if (thenGraphHasSuccessor) {
                addIndented('else ');
                visitWithIndent(elseGraph);
                buffer.add('\n');
              } else {
                generateStatements(elseGraph);
              }
              break;
          }
          break;
  