Buggy code:
public class ConstructorDeclaration extends AbstractMethodDeclaration { public ExplicitConstructorCall constructorCall ; public boolean isDefaultConstructor = false ; public TypeParameter [ ] typeParameters ; public ConstructorDeclaration ( CompilationResult compilationResult ) { } public void analyseCode ( ClassScope classScope , InitializationFlowContext initializerFlowContext , FlowInfo flowInfo ) { } public void generateCode ( ClassScope classScope , ClassFile classFile ) { } public void generateSyntheticFieldInitializationsIfNecessary ( MethodScope methodScope , CodeStream codeStream , ReferenceBinding declaringClass ) { } private void internalGenerateCode ( ClassScope classScope , ClassFile classFile ) { classFile . generateMethodInfoHeader ( binding ) ; int methodAttributeOffset = classFile . contentsOffset ; <START_BUG> int attributeNumber = classFile . generateMethodInfoAttribute ( binding ) ; <END_BUG> if ( ( ! ( binding . isNative ( ) ) ) && ( ! ( binding . isAbstract ( ) ) ) ) { TypeDeclaration declaringType = classScope . referenceContext ; int codeAttributeOffset = classFile . contentsOffset ; classFile . generateCodeAttributeHeader ( ) ; CodeStream codeStream = classFile . codeStream ; codeStream . reset ( this , classFile ) ; ReferenceBinding declaringClass = binding . declaringClass ; int enumOffset = ( declaringClass . isEnum ( ) ) ? 2 : 0 ; int argSlotSize = 1 + enumOffset ; if ( declaringClass . isNestedType ( ) ) { NestedTypeBinding nestedType = ( ( NestedTypeBinding ) ( declaringClass ) ) ; this . scope . extraSyntheticArguments = nestedType . syntheticOuterLocalVariables ( ) ; scope . computeLocalVariablePositions ( ( ( ( nestedType . enclosingInstancesSlotSize ) + 1 ) + enumOffset ) , codeStream ) ; argSlotSize += nestedType . enclosingInstancesSlotSize ; argSlotSize += nestedType . outerLocalVariablesSlotSize ; } else { scope . computeLocalVariablePositions ( ( 1 + enumOffset ) , codeStream ) ; } if ( ( arguments ) != null ) { for ( int i = 0 , max = arguments . length ; i < max ; i ++ ) { LocalVariableBinding argBinding ; codeStream . addVisibleLocalVariable ( ( argBinding = arguments [ i ] . binding ) ) ; argBinding . recordInitializationStartPC ( 0 ) ; TypeBinding argType ; if ( ( ( argType = argBinding . type ) == ( LongBinding ) ) || ( argType == ( DoubleBinding ) ) ) { argSlotSize += 2 ; } else { argSlotSize ++ ; } } } MethodScope initializerScope = declaringType . initializerScope ; initializerScope . computeLocalVariablePositions ( argSlotSize , codeStream ) ; boolean needFieldInitializations = ( ( constructorCall ) == null ) || ( ( constructorCall . accessMode ) != ( ExplicitConstructorCall . This ) ) ; boolean preInitSyntheticFields = ( scope . environment ( ) . options . targetJDK ) >= ( ClassFileConstants . JDK1_4 ) ; if ( needFieldInitializations && preInitSyntheticFields ) { generateSyntheticFieldInitializationsIfNecessary ( scope , codeStream , declaringClass ) ; } if ( ( constructorCall ) != null ) { constructorCall . generateCode ( scope , codeStream ) ; } if ( needFieldInitializations ) { if ( ! preInitSyntheticFields ) { generateSyntheticFieldInitializationsIfNecessary ( scope , codeStream , declaringClass ) ; } if ( ( declaringType . fields ) != null ) { for ( int i = 0 , max = declaringType . fields . length ; i < max ; i ++ ) { FieldDeclaration fieldDecl ; if ( ! ( ( fieldDecl = declaringType . fields [ i ] ) . isStatic ( ) ) ) { fieldDecl . generateCode ( initializerScope , codeStream ) ; } } } } if ( ( statements ) != null ) { for ( int i = 0 , max = statements . length ; i < max ; i ++ ) { statements [ i ] . generateCode ( scope , codeStream ) ; } } if ( this . needFreeReturn ) { codeStream . return_ ( ) ; } codeStream . exitUserScope ( scope ) ; codeStream . recordPositionsFrom ( 0 , this . bodyEnd ) ; classFile . completeCodeAttribute ( codeAttributeOffset ) ; attributeNumber ++ ; } classFile . completeMethodInfo ( methodAttributeOffset , attributeNumber ) ; if ( ignoreFurtherInvestigation ) { throw new org . eclipse . jdt . internal . compiler . problem . AbortMethod ( scope . referenceCompilationUnit ( ) . compilationResult , null ) ; } } 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:
int attributeNumber = classFile . generateMethodInfoAttribute ( this . binding ) ;