Buggy code:
public class ConstructorDeclaration extends AbstractMethodDeclaration { public ExplicitConstructorCall constructorCall ; public TypeParameter [ ] typeParameters ; public ConstructorDeclaration ( CompilationResult compilationResult ) { } public void analyseCode ( ClassScope classScope , InitializationFlowContext initializerFlowContext , FlowInfo flowInfo ) { } public void analyseCode ( ClassScope classScope , InitializationFlowContext initializerFlowContext , FlowInfo flowInfo , int initialReachMode ) { } public void generateCode ( ClassScope classScope , ClassFile classFile ) { int problemResetPC = 0 ; 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 . addProblemConstructor ( this , this . binding , problemsCopy ) ; return ; } try { problemResetPC = classFile . contentsOffset ; internalGenerateCode ( classScope , 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> internalGenerateCode ( classScope , 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 . addProblemConstructor ( 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 . addProblemConstructor ( this , this . binding , problemsCopy , problemResetPC ) ; } } } public void generateSyntheticFieldInitializationsIfNecessary ( MethodScope methodScope , CodeStream codeStream , ReferenceBinding declaringClass ) { } private void internalGenerateCode ( ClassScope classScope , ClassFile classFile ) { } public boolean isConstructor ( ) { } public boolean isDefaultConstructor ( ) { } public boolean isInitializationMethod ( ) { } public boolean isRecursive ( ArrayList visited ) { } public void parseStatements ( Parser parser , CompilationUnitDeclaration unit ) { } public StringBuffer printBody ( int indent , StringBuffer output ) { } public void resolveJavadoc ( ) { } public void resolveStatements ( ) { } public void traverse ( ASTVisitor visitor , ClassScope classScope ) { } public TypeParameter [ ] typeParameters ( ) { } }

Fix:
classFile . codeStream . resetInWideMode ( ) ;