Buggy code:
public final class ASTRewriteAnalyzer extends ASTVisitor { static final int JLS2_INTERNAL = AST . JLS2 ; TextEdit currentEdit ; final RewriteEventStore eventStore ; private TokenScanner tokenScanner ; private final Map sourceCopyInfoToEdit ; private final Stack sourceCopyEndNodes ; private final char [ ] content ; private final LineInformation lineInfo ; private final ASTRewriteFormatter formatter ; private final NodeInfoStore nodeInfos ; private final TargetSourceRangeComputer extendedSourceRangeComputer ; private final LineCommentEndOffsets lineCommentEndOffsets ; public ASTRewriteAnalyzer ( char [ ] content , LineInformation lineInfo , String lineDelim , TextEdit rootEdit , RewriteEventStore eventStore , NodeInfoStore nodeInfos , List comments , Map options , TargetSourceRangeComputer extendedSourceRangeComputer ) { } final TokenScanner getScanner ( ) { } final char [ ] getContent ( ) { } final LineInformation getLineInformation ( ) { } final TargetSourceRangeComputer . SourceRange getExtendedRange ( ASTNode node ) { } final int getExtendedOffset ( ASTNode node ) { } final int getExtendedEnd ( ASTNode node ) { } final TextEdit getCopySourceEdit ( RewriteEventStore . CopySourceInfo info ) { } private final int getChangeKind ( ASTNode node , StructuralPropertyDescriptor property ) { } private final boolean hasChildrenChanges ( ASTNode node ) { } private final boolean isChanged ( ASTNode node , StructuralPropertyDescriptor property ) { } private final boolean isCollapsed ( ASTNode node ) { } final boolean isInsertBoundToPrevious ( ASTNode node ) { } private final TextEditGroup getEditGroup ( ASTNode parent , StructuralPropertyDescriptor property ) { } final RewriteEvent getEvent ( ASTNode parent , StructuralPropertyDescriptor property ) { } final TextEditGroup getEditGroup ( RewriteEvent change ) { } private final Object getOriginalValue ( ASTNode parent , StructuralPropertyDescriptor property ) { } private final Object getNewValue ( ASTNode parent , StructuralPropertyDescriptor property ) { } final void addEdit ( TextEdit edit ) { } final String getLineDelimiter ( ) { } final String createIndentString ( int indent ) { } private final String getIndentOfLine ( int pos ) { int line = getLineInformation ( ) . getLineOfOffset ( pos ) ; <START_BUG> if ( pos >= 0 ) { <END_BUG> char [ ] cont = getContent ( ) ; int lineStart = getLineInformation ( ) . getLineOffset ( line ) ; int i = lineStart ; while ( ( i < ( cont . length ) ) && ( IndentManipulation . isIndentChar ( content [ i ] ) ) ) { i ++ ; } return new String ( cont , lineStart , ( i - lineStart ) ) ; } return new String ( ) ; } final String getIndentAtOffset ( int pos ) { } final void doTextInsert ( int offset , String insertString , TextEditGroup editGroup ) { } final void addEditGroup ( TextEditGroup editGroup , TextEdit edit ) { } final TextEdit doTextRemove ( int offset , int len , TextEditGroup editGroup ) { } final void doTextRemoveAndVisit ( int offset , int len , ASTNode node , TextEditGroup editGroup ) { } final int doVisit ( ASTNode node ) { } private final int doVisit ( ASTNode parent , StructuralPropertyDescriptor property , int offset ) { } private int doVisitList ( List list , int offset ) { } final void voidVisit ( ASTNode node ) { } private final void voidVisit ( ASTNode parent , StructuralPropertyDescriptor property ) { } private void voidVisitList ( List list ) { } private final boolean doVisitUnchangedChildren ( ASTNode parent ) { } private final void doTextReplace ( int offset , int len , String insertString , TextEditGroup editGroup ) { } private final TextEdit doTextCopy ( TextEdit sourceEdit , int destOffset , int sourceIndentLevel , String destIndentString , TextEditGroup editGroup ) { } private void changeNotSupported ( ASTNode node ) { } class ListRewriter { protected String contantSeparator ; protected int startPos ; protected RewriteEvent [ ] list ; protected final ASTNode getOriginalNode ( int index ) { } protected final ASTNode getNewNode ( int index ) { } protected String getSeparatorString ( int nodeIndex ) { } protected int getInitialIndent ( ) { } protected int getNodeIndent ( int nodeIndex ) { } protected int getStartOfNextNode ( int nextIndex , int defaultPos ) { } protected int getEndOfNode ( ASTNode node ) { } public final int rewriteList ( ASTNode parent , StructuralPropertyDescriptor property , int offset , String keyword , String separator ) { } private boolean insertAfterSeparator ( ASTNode node ) { } public final int rewriteList ( ASTNode parent , StructuralPropertyDescriptor property , int offset , String keyword ) { } } private int rewriteRequiredNode ( ASTNode parent , StructuralPropertyDescriptor property ) { } private int rewriteNode ( ASTNode parent , StructuralPropertyDescriptor property , int offset , ASTRewriteFormatter . Prefix prefix ) { } private int rewriteJavadoc ( ASTNode node , StructuralPropertyDescriptor property ) { } private int rewriteBodyNode ( ASTNode parent , StructuralPropertyDescriptor property , int offset , int endPos , int indent , ASTRewriteFormatter . BlockContext context ) { } private int rewriteOptionalQualifier ( ASTNode parent , StructuralPropertyDescriptor property , int startPos ) { } class ParagraphListRewriter extends ASTRewriteAnalyzer . ListRewriter { public static final int DEFAULT_SPACING = 1 ; private int initialIndent ; private int separatorLines ; public ParagraphListRewriter ( int initialIndent , int separator ) { } protected int getInitialIndent ( ) { } protected String getSeparatorString ( int nodeIndex ) { } private ASTNode getNode ( int nodeIndex ) { } private int getNewLines ( int nodeIndex ) { } private int countEmptyLines ( ASTNode last ) { } } private int rewriteParagraphList ( ASTNode parent , StructuralPropertyDescriptor property , int insertPos , int insertIndent , int separator , int lead ) { } private int rewriteOptionalTypeParameters ( ASTNode parent , StructuralPropertyDescriptor property , int offset , String keyword , boolean adjustOnNext , boolean needsSpaceOnRemoveAll ) { } private boolean isAllOfKind ( RewriteEvent [ ] children , int kind ) { } private int rewriteNodeList ( ASTNode parent , StructuralPropertyDescriptor property , int pos , String keyword , String separator ) { }

Fix:
if ( line >= 0 ) {