Buggy code:
int nameIndex = constantPool . literalIndexForJavaLangException ( ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( nameIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( nameIndex ) ) ; int codeAttributeAttributeOffset = localContentsOffset ; int attributeNumber = 0 ; localContentsOffset += 2 ; if ( codeStream . generateLineNumberAttributes ) { int lineNumberNameIndex = constantPool . literalIndex ( AttributeNamesConstants . LineNumberTableName ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( lineNumberNameIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( lineNumberNameIndex ) ) ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 6 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 1 ; if ( ( problemLine ) == 0 ) { problemLine = ClassFile . searchLineNumber ( startLineIndexes , binding . sourceStart ( ) ) ; } localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( ( problemLine ) > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( problemLine ) ) ; attributeNumber ++ ; } if ( codeStream . generateLocalVariableTableAttributes ) { int argSize ; int localVariableTableOffset = localContentsOffset ; int numberOfEntries = 0 ; int localVariableNameIndex = constantPool . literalIndex ( AttributeNamesConstants . LocalVariableTableName ) ; if ( ( localContentsOffset + 8 ) >= ( contentsLength = localContents . length ) ) { System . arraycopy ( contents , 0 , ( localContents = contents = new byte [ contentsLength + ( ClassFile . INCREMENT_SIZE ) ] ) , 0 , contentsLength ) ; } localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( localVariableNameIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( localVariableNameIndex ) ) ; localContentsOffset += 6 ; int descriptorIndex ; if ( ! ( codeStream . methodDeclaration . isStatic ( ) ) ) { numberOfEntries ++ ; if ( ( localContentsOffset + 10 ) >= ( contentsLength = localContents . length ) ) { System . arraycopy ( contents , 0 , ( localContents = contents = new byte [ contentsLength + ( ClassFile . INCREMENT_SIZE ) ] ) , 0 , contentsLength ) ; } localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( code_length > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( code_length ) ) ; nameIndex = constantPool . literalIndex ( This ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( nameIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( nameIndex ) ) ; descriptorIndex = constantPool . literalIndex ( codeStream . methodDeclaration . binding . declaringClass . signature ( ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( descriptorIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( descriptorIndex ) ) ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; } if ( binding . isConstructor ( ) ) { ReferenceBinding declaringClass = binding . declaringClass ; if ( declaringClass . isNestedType ( ) ) { NestedTypeBinding methodDeclaringClass = ( ( NestedTypeBinding ) ( declaringClass ) ) ; <START_BUG> argSize = methodDeclaringClass . syntheticArgumentsOffset ; <END_BUG> SyntheticArgumentBinding [ ] syntheticArguments ; if ( ( syntheticArguments = methodDeclaringClass . syntheticEnclosingInstances ( ) ) != null ) { for ( int i = 0 , max = syntheticArguments . length ; i < max ; i ++ ) { LocalVariableBinding localVariable = syntheticArguments [ i ] ; if ( ( localContentsOffset + 10 ) >= ( contentsLength = localContents . length ) ) { System . arraycopy ( contents , 0 , ( localContents = contents = new byte [ contentsLength + ( ClassFile . INCREMENT_SIZE ) ] ) , 0 , contentsLength ) ; } numberOfEntries ++ ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = 0 ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( code_length > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( code_length ) ) ; nameIndex = constantPool . literalIndex ( localVariable . name ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( nameIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( nameIndex ) ) ; descriptorIndex = constantPool . literalIndex ( localVariable . type . signature ( ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( descriptorIndex > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( descriptorIndex ) ) ; int resolvedPosition = localVariable . resolvedPosition ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( resolvedPosition > > 8 ) ) ; localContents [ ( localContentsOffset ++ ) ] = ( ( byte ) ( resolvedPosition ) ) ; } } } else { argSize = 1 ; } }

Fix:
argSize = methodDeclaringClass . enclosingInstancesSlotSize ;