anchor.diff:        return statement;
       }
   
  -    rewriteBody(Statement body) {
  -      if (body is !Block) return visit(body);
  -      Block block = body;
  -      NodeList statements = block.statements;
  -      LinkBuilder<Statement> builder = new LinkBuilder<Statement>();
  -      for (Statement statement in statements.nodes) {
  -        if (!shouldOmit(statement)) {
  -          builder.addLast(visit(rewritTo(statement)));
  -        }
  -      }
  -      return new Block(rewriteNodeList(statements, builder.toLink()));
  -    }
  -
  -    return rewriteFunctionExpression(node, rewriteBody(node.body));
  +    NodeList statements = block.statements;
  +    LinkBuilder<Statement> builder = new LinkBuilder<Statement>();
  +    for (Statement statement in statements.nodes) {
  +      if (!shouldOmit(statement)) {
  +        builder.addLast(visit(rewiteStatement(statement)));
  +      }
  +    }
  +    return new Block(rewriteNodeList(statements, builder.toLink()));
     }
   }
   
  
positive.code:   FunctionBodyRewriter(this.compiler, originalTreeElements)
        : super(originalTreeElements);
  
    visitFunctionExpression(FunctionExpression node) {
      shouldOmit(Statement statement) {
        if (statement is EmptyStatement) return true;
        if (statement is ExpressionStatement) {
  
negative.code:       return false;
      }
  
      rewiteStatement(Statement statement) {
        if (statement is Block) {
          Link statements = statement.statements.nodes;
          if (!statements.isEmpty() && statements.tail.isEmpty()) {
  