Buggy code:
public class MethodBinding extends Binding implements TypeConstants { public int modifiers ; public char [ ] selector ; public TypeBinding returnType ; public TypeBinding [ ] parameters ; public ReferenceBinding [ ] thrownExceptions ; public ReferenceBinding declaringClass ; public TypeVariableBinding [ ] typeVariables = Binding . NO_TYPE_VARIABLES ; char [ ] signature ; public long tagBits ; 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 areParameterErasuresEqual ( MethodBinding method ) { } public final boolean areParametersEqual ( MethodBinding method ) { } public final boolean areParametersCompatibleWith ( TypeBinding [ ] arguments ) { } public final int kind ( ) { } public final boolean canBeSeenBy ( PackageBinding invocationPackage ) { } public final boolean areTypeVariableErasuresEqual ( MethodBinding method ) { } public final boolean canBeSeenBy ( InvocationSite invocationSite , Scope scope ) { } public final boolean canBeSeenBy ( TypeBinding receiverType , InvocationSite invocationSite , Scope scope ) { } MethodBinding computeSubstitutedMethod ( MethodBinding method , LookupEnvironment env ) { TypeVariableBinding [ ] vars = this . typeVariables ; TypeVariableBinding [ ] vars2 = method . typeVariables ; if ( ( vars . length ) != ( vars2 . length ) ) return null ; for ( int v = vars . length ; ( -- v ) >= 0 ; ) if ( ! ( vars [ v ] . isInterchangeableWith ( env , vars2 [ v ] ) ) ) return null ; <START_BUG> return new ParameterizedGenericMethodBinding ( method , vars , env ) ; <END_BUG> } public char [ ] computeUniqueKey ( boolean isLeaf ) { } public TypeBinding constantPoolDeclaringClass ( ) { } public final char [ ] constantPoolName ( ) { } public char [ ] genericSignature ( ) { } public AnnotationBinding [ ] getAnnotations ( ) { } public AnnotationBinding [ ] getParameterAnnotations ( int index ) { } public final int getAccessFlags ( ) { } public long getAnnotationTagBits ( ) { } public Object getDefaultValue ( ) { } 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 isUsed ( ) { } 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 isVarargs ( ) { } public final boolean isViewedAsDeprecated ( ) { } public MethodBinding original ( ) { } public char [ ] readableName ( ) { } public void setAnnotations ( AnnotationBinding [ ] annotations ) { } public void setAnnotations ( AnnotationBinding [ ] annotations , AnnotationBinding [ ] [ ] parameterAnnotations , Object defaultValue ) { } public void setDefaultValue ( Object defaultValue ) { } public void setParameterAnnotations ( AnnotationBinding [ ] [ ] parameterAnnotations ) { } 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 String toString ( ) { } public MethodBinding tiebreakMethod ( ) { } public TypeVariableBinding [ ] typeVariables ( ) { } }

Fix:
return env . createParameterizedGenericMethod ( method , vars ) ;