Buggy code:
public class MethodBinding extends Binding implements BaseTypes , TypeConstants { public int modifiers ; public char [ ] selector ; public TypeBinding returnType ; public TypeBinding [ ] parameters ; public ReferenceBinding [ ] thrownExceptions ; public ReferenceBinding declaringClass ; public TypeVariableBinding [ ] typeVariables = NoTypeVariables ; char [ ] signature ; protected MethodBinding ( ) { } public MethodBinding ( int modifiers , char [ ] selector , TypeBinding returnType , TypeBinding [ ] parameters , ReferenceBinding [ ] thrownExceptions , ReferenceBinding declaringClass ) { } public MethodBinding ( int modifiers , TypeBinding [ ] parameters , ReferenceBinding [ ] thrownExceptions , ReferenceBinding declaringClass ) { } public MethodBinding ( MethodBinding initialMethodBinding , ReferenceBinding declaringClass ) { } public final boolean areParametersEqual ( MethodBinding method ) { } public final boolean areParametersCompatibleWith ( TypeBinding [ ] arguments ) { } public final boolean areParameterErasuresEqual ( MethodBinding method ) { } public final int bindingType ( ) { } public final boolean canBeSeenBy ( PackageBinding invocationPackage ) { } public final boolean canBeSeenBy ( InvocationSite invocationSite , Scope scope ) { } public final boolean canBeSeenBy ( TypeBinding receiverType , InvocationSite invocationSite , Scope scope ) { } public char [ ] computeUniqueKey ( ) { } protected char [ ] computeUniqueKey ( MethodBinding methodBinding ) { char [ ] declaringKey = this . declaringClass . computeUniqueKey ( ) ; int declaringLength = declaringKey . length ; int selectorLength = ( ( this . selector ) == ( TypeConstants . INIT ) ) ? 0 : this . selector . length ; char [ ] sig = methodBinding . genericSignature ( ) ; if ( sig == null ) <START_BUG> sig = signature ( ) ; <END_BUG> int signatureLength = sig . length ; char [ ] uniqueKey = new char [ ( ( declaringLength + 1 ) + selectorLength ) + signatureLength ] ; System . arraycopy ( declaringKey , 0 , uniqueKey , 0 , declaringLength ) ; uniqueKey [ declaringLength ] = '.' ; System . arraycopy ( this . selector , 0 , uniqueKey , ( declaringLength + 1 ) , selectorLength ) ; System . arraycopy ( sig , 0 , uniqueKey , ( ( declaringLength + 1 ) + selectorLength ) , signatureLength ) ; return uniqueKey ; } public TypeBinding constantPoolDeclaringClass ( ) { } public final char [ ] constantPoolName ( ) { } public char [ ] genericSignature ( ) { } public final int getAccessFlags ( ) { } public TypeVariableBinding getTypeVariable ( char [ ] variableName ) { } public boolean hasSubstitutedParameters ( ) { } public boolean hasSubstitutedReturnType ( ) { } public final boolean isAbstract ( ) { } public final boolean isBridge ( ) { } public final boolean isConstructor ( ) { } public final boolean isDefault ( ) { } public final boolean isDefaultAbstract ( ) { } public final boolean isDeprecated ( ) { } public final boolean isFinal ( ) { } public final boolean isImplementing ( ) { } public final boolean isNative ( ) { } public final boolean isOverriding ( ) { } public final boolean isMain ( ) { } public final boolean isPrivate ( ) { } public final boolean isPrivateUsed ( ) { } public final boolean isProtected ( ) { } public final boolean isPublic ( ) { } public final boolean isRequiredToClearPrivateModifier ( ) { } public final boolean isStatic ( ) { } public final boolean isStrictfp ( ) { } public final boolean isSynchronized ( ) { } public final boolean isSynthetic ( ) { } public final boolean isVarargs ( ) { } public final boolean isViewedAsDeprecated ( ) { } public MethodBinding original ( ) { } public char [ ] readableName ( ) { } public char [ ] shortReadableName ( ) { } protected final void setSelector ( char [ ] selector ) { } public final char [ ] signature ( ) { } public final int sourceEnd ( ) { } public AbstractMethodDeclaration sourceMethod ( ) { } public final int sourceStart ( ) { } public final void tagForClearingPrivateModifier ( ) { } public String toString ( ) { } public MethodBinding tiebreakMethod ( ) { } public TypeVariableBinding [ ] typeVariables ( ) { } }

Fix:
sig = methodBinding . signature ( ) ;