anchor.diff:    
     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) {
       
  
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:     modifier(node.externalKeyword);
      
      //Only print formal argument types if doing partial strip 
      if (STRIP_METHOD_SIG) printTokens = false;      
      visitNode(node.returnType, followedBy: space);
      printTokens = true;
  
      
      modifier(node.propertyKeyword);
      visit(node.name);
      visit(node.functionExpression);
  