anchor.diff:  
   function_body :
        t_FUNCTION (t_FILLER? output_params t_FILLER? t_ASSIGN)? t_FILLER? name t_FILLER? (input_params t_FILLER?)?
  -     (stmt_separator -> template(original={$text}, extra={getCommentStringToInsert()}) "<original><extra>")
  +     (stmt_separator -> template(original={$text}, extra={insertDeletedComments()}) "<original><extra>")
        (t_FILLER? stmt_or_function)* t_FILLER? 
        t_END
     ;
  
positive.code: private boolean inCurly() { return !bracketStack.isEmpty() && bracketStack.peek() == LCURLY; }
  private boolean inSquare() { return !bracketStack.isEmpty() && bracketStack.peek() == LSQUARE; }
  
  private String leadingComments = null;
  
  private String getCommentStringToInsert() {
      if(leadingComments == null) {
          return "";
      }
      String commentString = leadingComments + "\n";
      leadingComments = null;
      return commentString;
  }
  }
  
  
negative.code:         //fudge factor to point following stuff back to location preceding inserted newlines
          offsetTracker.recordOffsetChange(-1, lineLength);
       }
       ((function_separator_blob { appendToLeadingComments($text, $start.getCharPositionInLine()); }) -> template() "")*
       -> template(gap={"\n\n"}) "<gap>"
    ;
  
  