Buggy code:
public abstract class AbstractMethodDeclaration extends ASTNode implements ReferenceContext , ProblemSeverities { public MethodScope scope ; public char [ ] selector ; public int declarationSourceStart ; public int declarationSourceEnd ; public int modifiers ; public int modifiersSourceStart ; public Annotation [ ] annotations ; public Argument [ ] arguments ; public TypeReference [ ] thrownExceptions ; public Statement [ ] statements ; public int explicitDeclarations ; public MethodBinding binding ; public boolean ignoreFurtherInvestigation = false ; public Javadoc javadoc ; public int bodyStart ; public int bodyEnd = - 1 ; public CompilationResult compilationResult ; AbstractMethodDeclaration ( CompilationResult compilationResult ) { } public void abort ( int abortLevel , CategorizedProblem problem ) { } public abstract void analyseCode ( ClassScope classScope , InitializationFlowContext initializationContext , FlowInfo info ) { } public void bindArguments ( ) { } public void bindThrownExceptions ( ) { } public CompilationResult compilationResult ( ) { } public void generateCode ( ClassScope classScope , ClassFile classFile ) { int problemResetPC = 0 ; classFile . codeStream . wideMode = false ; if ( this . ignoreFurtherInvestigation ) { if ( ( this . binding ) == null ) return ; int problemsLength ; CategorizedProblem [ ] problems = this . scope . referenceCompilationUnit ( ) . compilationResult . getProblems ( ) ; CategorizedProblem [ ] problemsCopy = new CategorizedProblem [ problemsLength = problems . length ] ; System . arraycopy ( problems , 0 , problemsCopy , 0 , problemsLength ) ; classFile . addProblemMethod ( this , this . binding , problemsCopy ) ; return ; } try { problemResetPC = classFile . contentsOffset ; this . generateCode ( classFile ) ; } catch ( org . eclipse . jdt . internal . compiler . problem . AbortMethod e ) { if ( ( e . compilationResult ) == ( CodeStream . RESTART_IN_WIDE_MODE ) ) { try { classFile . contentsOffset = problemResetPC ; ( classFile . methodCount ) -- ; <START_BUG> classFile . codeStream . wideMode = true ; <END_BUG> this . generateCode ( classFile ) ; } catch ( org . eclipse . jdt . internal . compiler . problem . AbortMethod e2 ) { int problemsLength ; CategorizedProblem [ ] problems = this . scope . referenceCompilationUnit ( ) . compilationResult . getAllProblems ( ) ; CategorizedProblem [ ] problemsCopy = new CategorizedProblem [ problemsLength = problems . length ] ; System . arraycopy ( problems , 0 , problemsCopy , 0 , problemsLength ) ; classFile . addProblemMethod ( this , this . binding , problemsCopy , problemResetPC ) ; } } else { int problemsLength ; CategorizedProblem [ ] problems = this . scope . referenceCompilationUnit ( ) . compilationResult . getAllProblems ( ) ; CategorizedProblem [ ] problemsCopy = new CategorizedProblem [ problemsLength = problems . length ] ; System . arraycopy ( problems , 0 , problemsCopy , 0 , problemsLength ) ; classFile . addProblemMethod ( this , this . binding , problemsCopy , problemResetPC ) ; } } } public void generateCode ( ClassFile classFile ) { } private void checkArgumentsSize ( ) { } public boolean hasErrors ( ) { } public boolean isAbstract ( ) { } public boolean isAnnotationMethod ( ) { } public boolean isClinit ( ) { } public boolean isConstructor ( ) { } public boolean isDefaultConstructor ( ) { } public boolean isInitializationMethod ( ) { } public boolean isMethod ( ) { } public boolean isNative ( ) { } public boolean isStatic ( ) { } public abstract void parseStatements ( Parser parser , CompilationUnitDeclaration unit ) { } public StringBuffer print ( int tab , StringBuffer output ) { } public StringBuffer printBody ( int indent , StringBuffer output ) { } public StringBuffer printReturnType ( int indent , StringBuffer output ) { } public void resolve ( ClassScope upperScope ) { } public void resolveJavadoc ( ) { } public void resolveStatements ( ) { } public void tagAsHavingErrors ( ) { } public void traverse ( ASTVisitor visitor , ClassScope classScope ) { } public TypeParameter [ ] typeParameters ( ) { } }

Fix:
classFile . codeStream . resetInWideMode ( ) ;