Buggy code:
public final boolean isFinal ( ) { } public final boolean isImplementing ( ) { } public final boolean isMain ( ) { } public final boolean isNative ( ) { } public final boolean isOverriding ( ) { } public final boolean isPrivate ( ) { } public final boolean isOrEnclosedByPrivateType ( ) { } public final boolean isProtected ( ) { } public final boolean isPublic ( ) { } public final boolean isStatic ( ) { } public final boolean isStrictfp ( ) { } public final boolean isSynchronized ( ) { } public final boolean isSynthetic ( ) { } public final boolean isUsed ( ) { } public final boolean isVarargs ( ) { } public final boolean isViewedAsDeprecated ( ) { } public final int kind ( ) { } public MethodBinding original ( ) { } public char [ ] readableName ( ) { } public void setAnnotations ( AnnotationBinding [ ] annotations ) { } public void setAnnotations ( AnnotationBinding [ ] annotations , AnnotationBinding [ ] [ ] parameterAnnotations , Object defaultValue , LookupEnvironment optionalEnv ) { } public void setDefaultValue ( Object defaultValue ) { } public void setParameterAnnotations ( AnnotationBinding [ ] [ ] parameterAnnotations ) { } protected final void setSelector ( char [ ] selector ) { } public char [ ] shortReadableName ( ) { } public final char [ ] signature ( ) { } public final char [ ] signature ( ClassFile classFile ) { if ( ( this . signature ) != null ) { if ( ( ( this . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { boolean isConstructor = isConstructor ( ) ; TypeBinding [ ] targetParameters = this . parameters ; boolean needSynthetics = isConstructor && ( this . declaringClass . isNestedType ( ) ) ; if ( needSynthetics ) { ReferenceBinding [ ] syntheticArgumentTypes = this . declaringClass . syntheticEnclosingInstanceTypes ( ) ; if ( syntheticArgumentTypes != null ) { for ( int i = 0 , count = syntheticArgumentTypes . length ; i < count ; i ++ ) { ReferenceBinding syntheticArgumentType = syntheticArgumentTypes [ i ] ; if ( ( ( syntheticArgumentType . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { Util . recordNestedType ( classFile , syntheticArgumentType ) ; } } } if ( ( this ) instanceof SyntheticMethodBinding ) { targetParameters = ( ( SyntheticMethodBinding ) ( this ) ) . targetMethod . parameters ; } } if ( targetParameters != ( Binding . NO_PARAMETERS ) ) { for ( int i = 0 , max = targetParameters . length ; i < max ; i ++ ) { TypeBinding targetParameter = targetParameters [ i ] ; TypeBinding leafTargetParameterType = targetParameter . leafComponentType ( ) ; if ( ( ( leafTargetParameterType . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { Util . recordNestedType ( classFile , leafTargetParameterType ) ; } } } if ( needSynthetics ) { for ( int i = targetParameters . length , extraLength = this . parameters . length ; i < extraLength ; i ++ ) { TypeBinding parameter = this . parameters [ i ] ; TypeBinding leafParameterType = parameter . leafComponentType ( ) ; if ( ( ( leafParameterType . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { Util . recordNestedType ( classFile , leafParameterType ) ; } } } if ( ( this . returnType ) != null ) { TypeBinding ret = this . returnType . leafComponentType ( ) ; if ( ( ( ret . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { Util . recordNestedType ( classFile , ret ) ; } } } return this . signature ; } <START_BUG> StringBuffer buffer = new StringBuffer ( ( ( this . parameters . length ) + ( 1 * 20 ) ) ) ; <END_BUG> buffer . append ( '(' ) ; TypeBinding [ ] targetParameters = this . parameters ; boolean isConstructor = isConstructor ( ) ; if ( isConstructor && ( this . declaringClass . isEnum ( ) ) ) { buffer . append ( ConstantPool . JavaLangStringSignature ) ; buffer . append ( TypeBinding . INT . signature ( ) ) ; } boolean needSynthetics = isConstructor && ( this . declaringClass . isNestedType ( ) ) ; if ( needSynthetics ) { ReferenceBinding [ ] syntheticArgumentTypes = this . declaringClass . syntheticEnclosingInstanceTypes ( ) ; if ( syntheticArgumentTypes != null ) { for ( int i = 0 , count = syntheticArgumentTypes . length ; i < count ; i ++ ) { ReferenceBinding syntheticArgumentType = syntheticArgumentTypes [ i ] ; if ( ( ( syntheticArgumentType . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { this . tagBits |= TagBits . ContainsNestedTypeReferences ; Util . recordNestedType ( classFile , syntheticArgumentType ) ; } buffer . append ( syntheticArgumentType . signature ( ) ) ; } } if ( ( this ) instanceof SyntheticMethodBinding ) { targetParameters = ( ( SyntheticMethodBinding ) ( this ) ) . targetMethod . parameters ; } } if ( targetParameters != ( Binding . NO_PARAMETERS ) ) { for ( int i = 0 , max = targetParameters . length ; i < max ; i ++ ) { TypeBinding targetParameter = targetParameters [ i ] ; TypeBinding leafTargetParameterType = targetParameter . leafComponentType ( ) ; if ( ( ( leafTargetParameterType . tagBits ) & ( TagBits . ContainsNestedTypeReferences ) ) != 0 ) { this . tagBits |= TagBits . ContainsNestedTypeReferences ; Util . recordNestedType ( classFile , leafTargetParameterType ) ; } buffer . append ( targetParameter . signature ( ) ) ; } } if ( needSynthetics ) { SyntheticArgumentBinding [ ] syntheticOuterArguments = this . declaringClass . syntheticOuterLocalVariables ( ) ;

Fix:
StringBuffer buffer = new StringBuffer ( ( ( ( this . parameters . length ) + 1 ) * 20 ) ) ;