anchor.diff:      visitNode(node.implementsClause);
       visitNode(node.nativeClause, before: space);
       space();
  -    token(node.leftBracket);
  -    _writer.increaseIndent();
  -    _writer.startMultisplit();
  -    _writer.multisplit(allowTrailingCommentBefore: false);
  -
  -    for (var i = 0; i < node.members.length; i++) {
  -      visit(node.members[i]);
  -
  -      // Allow a blank line between statements, but not after the last.
  -      if (i == node.members.length - 1) {
  -        newline();
  -      } else {
  -        oneOrTwoNewlines();
  -      }
  -
  +
  +    _startBody(node.leftBracket);
  +
  +    visitNodes(node.members, between: () {
  +      oneOrTwoNewlines();
         _writer.resetNesting();
  -    }
  -
  -    token(node.rightBracket, before: () {
  -      // TODO(bob): Move these out of before?
  -      _writer.decreaseIndent();
  -      _writer.multisplit();
  -      _writer.endMultisplit();
  -    });
  +    }, after: newline);
  +
  +    _endBody(node.rightBracket);
     }
   
     visitClassTypeAlias(ClassTypeAlias node) {
  
positive.code:   }
  
    visitBlock(Block node) {
      token(node.leftBracket);
  
      // TODO(bob): Helper fn for these?
      _writer.increaseIndent();
      _writer.startMultisplit();
      _writer.multisplit(allowTrailingCommentBefore: false);
  
      for (var i = 0; i < node.statements.length; i++) {
        visit(node.statements[i]);
  
        // Allow a blank line between statements, but not after the last.
        if (i == node.statements.length - 1) {
          newline();
        } else {
          oneOrTwoNewlines();
        }
  
        _writer.resetNesting();
      }
  
      token(node.rightBracket, before: () {
        _writer.decreaseIndent();
        _writer.multisplit();
        _writer.endMultisplit();
      });
    }
  
    visitBlockFunctionBody(BlockFunctionBody node) {
  
negative.code:       Iterable<AstNode> elements, Token rightBracket) {
      modifier(node.constKeyword);
      visitNode(node.typeArguments);
  
      _startBody(leftBracket, Cost.COLLECTION_LITERAL);
  
      visitCommaSeparatedNodes(elements, between: () {
        _writer.multisplit(text: " ");
  