Buggy code:
public class SelectionRequestor implements ISelectionRequestor { protected NameLookup nameLookup ; protected Openable openable ; protected IJavaElement [ ] elements = JavaElement . NO_ELEMENTS ; protected int elementIndex = - 1 ; protected HandleFactory handleFactory = new HandleFactory ( ) ; public SelectionRequestor ( NameLookup nameLookup , Openable openable ) { } protected void acceptBinaryMethod ( IType type , char [ ] selector , char [ ] [ ] parameterPackageNames , char [ ] [ ] parameterTypeNames , String [ ] parameterSignatures , char [ ] uniqueKey , boolean isConstructor ) { } public void acceptType ( char [ ] packageName , char [ ] typeName , int modifiers , boolean isDeclaration , char [ ] uniqueKey , int start , int end ) { } public void acceptError ( CategorizedProblem error ) { } public void acceptField ( char [ ] declaringTypePackageName , char [ ] declaringTypeName , char [ ] name , boolean isDeclaration , char [ ] uniqueKey , int start , int end ) { } public void acceptLocalField ( FieldBinding fieldBinding ) { } public void acceptLocalMethod ( MethodBinding methodBinding ) { } public void acceptLocalType ( TypeBinding typeBinding ) { } public void acceptLocalTypeParameter ( TypeVariableBinding typeVariableBinding ) { } public void acceptLocalMethodTypeParameter ( TypeVariableBinding typeVariableBinding ) { } public void acceptLocalVariable ( LocalVariableBinding binding ) { } public void acceptMethod ( char [ ] declaringTypePackageName , char [ ] declaringTypeName , String enclosingDeclaringTypeSignature , char [ ] selector , char [ ] [ ] parameterPackageNames , char [ ] [ ] parameterTypeNames , String [ ] parameterSignatures , boolean isConstructor , boolean isDeclaration , char [ ] uniqueKey , int start , int end ) { IJavaElement [ ] previousElement = this . elements ; int previousElementIndex = this . elementIndex ; this . elements = JavaElement . NO_ELEMENTS ; this . elementIndex = - 1 ; if ( isDeclaration ) { IType type = resolveTypeByLocation ( declaringTypePackageName , declaringTypeName , NameLookup . ACCEPT_ALL , start , end ) ; if ( type != null ) { this . acceptMethodDeclaration ( type , selector , start , end ) ; } } else { IType type = resolveType ( declaringTypePackageName , declaringTypeName , NameLookup . ACCEPT_ALL ) ; if ( type != null ) { if ( type . isBinary ( ) ) { IType declaringDeclaringType = type . getDeclaringType ( ) ; boolean isStatic = false ; try { isStatic = Flags . isStatic ( type . getFlags ( ) ) ; } catch ( JavaModelException e ) { } if ( ( ( declaringDeclaringType != null ) && isConstructor ) && ( ! isStatic ) ) { int length = parameterPackageNames . length ; System . arraycopy ( parameterPackageNames , 0 , ( parameterPackageNames = new char [ length + 1 ] [ ] ) , 1 , length ) ; System . arraycopy ( parameterTypeNames , 0 , ( parameterTypeNames = new char [ length + 1 ] [ ] ) , 1 , length ) ; System . arraycopy ( parameterSignatures , 0 , ( parameterSignatures = new String [ length + 1 ] ) , 1 , length ) ; parameterPackageNames [ 0 ] = declaringDeclaringType . getPackageFragment ( ) . getElementName ( ) . toCharArray ( ) ; parameterTypeNames [ 0 ] = declaringDeclaringType . getTypeQualifiedName ( ) . toCharArray ( ) ; <START_BUG> parameterSignatures [ 0 ] = enclosingDeclaringTypeSignature ; <END_BUG> } acceptBinaryMethod ( type , selector , parameterPackageNames , parameterTypeNames , parameterSignatures , uniqueKey , isConstructor ) ; } else { acceptSourceMethod ( type , selector , parameterPackageNames , parameterTypeNames , uniqueKey ) ; } } } if ( previousElementIndex > ( - 1 ) ) { int elementsLength = ( ( this . elementIndex ) + previousElementIndex ) + 2 ; if ( elementsLength > ( this . elements . length ) ) { System . arraycopy ( this . elements , 0 , ( this . elements = new IJavaElement [ ( elementsLength * 2 ) + 1 ] ) , 0 , ( ( this . elementIndex ) + 1 ) ) ; } System . arraycopy ( previousElement , 0 , this . elements , ( ( this . elementIndex ) + 1 ) , ( previousElementIndex + 1 ) ) ; this . elementIndex += previousElementIndex + 1 ; } } public void acceptPackage ( char [ ] packageName ) { } protected void acceptSourceMethod ( IType type , char [ ] selector , char [ ] [ ] parameterPackageNames , char [ ] [ ] parameterTypeNames , char [ ] uniqueKey ) { } protected void acceptMethodDeclaration ( IType type , char [ ] selector , int start , int end ) { } public void acceptTypeParameter ( char [ ] declaringTypePackageName , char [ ] declaringTypeName , char [ ] typeParameterName , boolean isDeclaration , int start , int end ) { } public void acceptMethodTypeParameter ( char [ ] declaringTypePackageName , char [ ] declaringTypeName , char [ ] selector , int selectorStart , int selectorEnd , char [ ] typeParameterName , boolean isDeclaration , int start , int end ) { } protected void addElement ( IJavaElement element ) { } protected IJavaElement findLocalElement ( int pos ) { } public IJavaElement [ ] getElements ( ) { } protected IType resolveType ( char [ ] packageName , char [ ] typeName , int acceptFlags ) { } protected IType resolveTypeByLocation ( char [ ] packageName , char [ ] typeName , int acceptFlags , int start , int end ) { } }

Fix:
parameterSignatures [ 0 ] = Signature . getTypeErasure ( enclosingDeclaringTypeSignature ) ;