Buggy code:
class MethodVerifier15 extends MethodVerifier { MethodVerifier15 ( LookupEnvironment environment ) { } boolean areMethodsCompatible ( MethodBinding one , MethodBinding two ) { } boolean areParametersEqual ( MethodBinding one , MethodBinding two ) { } boolean areReturnTypesCompatible ( MethodBinding one , MethodBinding two ) { } boolean areTypesEqual ( TypeBinding one , TypeBinding two ) { } boolean canSkipInheritedMethods ( ) { } boolean canSkipInheritedMethods ( MethodBinding one , MethodBinding two ) { } void checkConcreteInheritedMethod ( MethodBinding concreteMethod , MethodBinding [ ] abstractMethods ) { } void checkForBridgeMethod ( MethodBinding currentMethod , MethodBinding inheritedMethod , MethodBinding [ ] allInheritedMethods ) { } void checkForNameClash ( MethodBinding currentMethod , MethodBinding inheritedMethod ) { <START_BUG> if ( ( currentMethod . declaringClass . isInterface ( ) ) || ( currentMethod . isStatic ( ) ) ) <END_BUG> return ; if ( ! ( detectNameClash ( currentMethod , inheritedMethod ) ) ) { TypeBinding [ ] currentParams = currentMethod . parameters ; TypeBinding [ ] inheritedParams = inheritedMethod . parameters ; int length = currentParams . length ; if ( length != ( inheritedParams . length ) ) return ; for ( int i = 0 ; i < length ; i ++ ) if ( ( currentParams [ i ] ) != ( inheritedParams [ i ] ) ) if ( ( ( currentParams [ i ] . isBaseType ( ) ) != ( inheritedParams [ i ] . isBaseType ( ) ) ) || ( ! ( inheritedParams [ i ] . isCompatibleWith ( currentParams [ i ] ) ) ) ) return ; ReferenceBinding [ ] interfacesToVisit = null ; int nextPosition = 0 ; ReferenceBinding superType = inheritedMethod . declaringClass ; ReferenceBinding [ ] itsInterfaces = superType . superInterfaces ( ) ; if ( itsInterfaces != ( Binding . NO_SUPERINTERFACES ) ) { nextPosition = itsInterfaces . length ; interfacesToVisit = itsInterfaces ; } superType = superType . superclass ( ) ; while ( ( superType != null ) && ( superType . isValidBinding ( ) ) ) { MethodBinding [ ] methods = superType . getMethods ( currentMethod . selector ) ; for ( int m = 0 , n = methods . length ; m < n ; m ++ ) { MethodBinding substitute = computeSubstituteMethod ( methods [ m ] , currentMethod ) ; if ( ( ( substitute != null ) && ( ! ( isSubstituteParameterSubsignature ( currentMethod , substitute ) ) ) ) && ( detectNameClash ( currentMethod , substitute ) ) ) return ; } if ( ( itsInterfaces = superType . superInterfaces ( ) ) != ( Binding . NO_SUPERINTERFACES ) ) { if ( interfacesToVisit == null ) { interfacesToVisit = itsInterfaces ; nextPosition = interfacesToVisit . length ; } else { int itsLength = itsInterfaces . length ; if ( ( nextPosition + itsLength ) >= ( interfacesToVisit . length ) ) System . arraycopy ( interfacesToVisit , 0 , ( interfacesToVisit = new ReferenceBinding [ ( nextPosition + itsLength ) + 5 ] ) , 0 , nextPosition ) ; nextInterface : for ( int a = 0 ; a < itsLength ; a ++ ) { ReferenceBinding next = itsInterfaces [ a ] ; for ( int b = 0 ; b < nextPosition ; b ++ ) if ( next == ( interfacesToVisit [ b ] ) ) continue nextInterface ; interfacesToVisit [ ( nextPosition ++ ) ] = next ; } } } superType = superType . superclass ( ) ; } for ( int i = 0 ; i < nextPosition ; i ++ ) { superType = interfacesToVisit [ i ] ; if ( superType . isValidBinding ( ) ) { MethodBinding [ ] methods = superType . getMethods ( currentMethod . selector ) ; for ( int m = 0 , n = methods . length ; m < n ; m ++ ) { MethodBinding substitute = computeSubstituteMethod ( methods [ m ] , currentMethod ) ; if ( ( ( substitute != null ) && ( ! ( isSubstituteParameterSubsignature ( currentMethod , substitute ) ) ) ) && ( detectNameClash ( currentMethod , substitute ) ) ) return ; } if ( ( itsInterfaces = superType . superInterfaces ( ) ) != ( Binding . NO_SUPERINTERFACES ) ) { int itsLength = itsInterfaces . length ; if ( ( nextPosition + itsLength ) >= ( interfacesToVisit . length ) ) System . arraycopy ( interfacesToVisit , 0 , ( interfacesToVisit = new ReferenceBinding [ ( nextPosition + itsLength ) + 5 ] ) , 0 , nextPosition ) ; nextInterface : for ( int a = 0 ; a < itsLength ; a ++ ) { ReferenceBinding next = itsInterfaces [ a ] ; for ( int b = 0 ; b < nextPosition ; b ++ ) if ( next == ( interfacesToVisit [ b ] ) ) continue nextInterface ; interfacesToVisit [ ( nextPosition ++ ) ] = next ; } } } } } } void checkInheritedMethods ( MethodBinding inheritedMethod , MethodBinding otherInheritedMethod ) { } void checkInheritedMethods ( MethodBinding [ ] methods , int length ) { } boolean checkInheritedReturnTypes ( MethodBinding [ ] methods , int length ) { } void checkMethods ( ) { } void checkTypeVariableMethods ( TypeParameter typeParameter ) { } MethodBinding computeSubstituteMethod ( MethodBinding inheritedMethod , MethodBinding currentMethod ) { } boolean detectInheritedNameClash ( MethodBinding inherited , MethodBinding otherInherited ) { } boolean detectNameClash ( MethodBinding current , MethodBinding inherited ) { } public boolean doesMethodOverride ( MethodBinding method , MethodBinding inheritedMethod ) { } boolean hasGenericParameter ( MethodBinding method ) { } boolean doTypeVariablesClash ( MethodBinding one , MethodBinding substituteTwo ) { } SimpleSet findSuperinterfaceCollisions ( ReferenceBinding superclass , ReferenceBinding [ ] superInterfaces ) { } boolean isInterfaceMethodImplemented ( MethodBinding inheritedMethod , MethodBinding existingMethod , ReferenceBinding superType ) { } public boolean isMethodSubsignature ( MethodBinding method , MethodBinding inheritedMethod ) { }

Fix:
if ( ( currentMethod . declaringClass . isInterface ( ) ) || ( inheritedMethod . isStatic ( ) ) )