anchor.diff:    }
   
     visitBlockExpression(BlockExpression node) {
  -    writeWord('do:');
  -    writeNode(node.body);
  -    writeWord('done:');
  +    int savedColumn = column;
  +
  +    var savedState = state;
  +    int savedIndentation = indentation;
  +    String spaces = ' ' * savedColumn;
  +
  +    writeWord('|{');
  +    endLine();
  +    state = SPACE;
  +    indentation = (savedColumn + 4) ~/ 2;
  +    for (var statement in node.body.statements) {
  +      statement.accept(this);
  +    }
  +    endLine();
  +    write('$spaces   => ');
       writeExpression(node.value);
  +    endLine();
  +    write('$spaces');
  +
  +    indentation = savedIndentation;
  +    state = savedState;
  +    column = savedColumn;
  +
  +    write('}| ');
     }
   
     defaultExpression(Expression node) {
  
positive.code: 
    void write(String string) {
      sink.write(string);
    }
  
    void writeSpace([String string = ' ']) {
  
negative.code:   final Annotator annotator;
    ImportTable importTable;
    int indentation = 0;
    int column = 0;
  
    static int SPACE = 0;
    static int WORD = 1;
  