anchor.diff:      var node = parse(kind, startToken);
       checkForErrors();
   
  +    var t = node.toString();
  +    
       var formatter = new StripSourceVisitor(options, lineInfo, source, selection);
       node.accept(formatter);
   
       var formattedSource = formatter.writer.toString();
  -
  -    /*checkTokenStreams(startToken, tokenize(formattedSource),
  -                      allowTransforms: options.codeTransforms);*/
  +print(formattedSource);
  +    checkTokenStreams(startToken, tokenize(formattedSource),
  +                      allowTransforms: options.codeTransforms);
   
       return new FormattedSource(formattedSource, formatter.selection);
     }
  
positive.code:     visitMemberMetadata(node.metadata);
      modifier(node.keyword);
      
      if (isGenericType && KEEP_GENERIC_TYPES) {
        visitNode(node.type, followedBy: space);
      } else if (node.type != null && node.keyword == null) {
        Identifier ident = new SimpleIdentifier(new KeywordToken(Keyword.VAR, node.type.offset));
        visitNode(ident, followedBy: space);
      }
  
negative.code:   
    List<String> typeArguments = new List<String>();
    
    bool printTokens = true;
    
    token(Token token, {precededBy(), followedBy(), printToken(tok),
        int minNewlines: 0}) {
      if (token != null) {
        if (needsNewline) {
          minNewlines = max(1, minNewlines);
        }
        var emitted = emitPrecedingCommentsAndNewlines(token, min: minNewlines);
        if (emitted > 0) {
          needsNewline = false;
        }
        if (precededBy != null) {
          precededBy();
        }
        checkForSelectionUpdate(token);
        if (printTokens) {
          if (printToken == null) {
            append(token.lexeme);
          } else {
            printToken(token);
          }
        }   
        if (followedBy != null) {
          followedBy();
        }
        previousToken = token;
      }
    }
    
    visitClassDeclaration(ClassDeclaration node) {
      
  