Buggy code:
class MethodVerifier15 extends MethodVerifier { MethodVerifier15 ( LookupEnvironment environment ) { } boolean areMethodsEqual ( MethodBinding one , MethodBinding two ) { } boolean areParametersEqual ( MethodBinding one , MethodBinding two ) { } boolean areReturnTypesEqual ( MethodBinding one , MethodBinding substituteTwo ) { } 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 checkForInheritedNameClash ( MethodBinding inheritedMethod , MethodBinding otherInheritedMethod ) { } void checkForNameClash ( MethodBinding currentMethod , MethodBinding inheritedMethod ) { } 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 doesSubstituteMethodOverride ( MethodBinding method , MethodBinding substituteMethod ) { } boolean doTypeVariablesClash ( MethodBinding one , MethodBinding substituteTwo ) { } boolean isInterfaceMethodImplemented ( MethodBinding inheritedMethod , MethodBinding existingMethod , ReferenceBinding superType ) { } boolean isReturnTypeSubstituable ( MethodBinding substituteMethod , MethodBinding existingMethod ) { class ReturnTypeSubstitution implements Substitution { TypeBinding replaced ; TypeBinding replacer ; ReturnTypeSubstitution ( TypeBinding replaced , TypeBinding replacer ) { } public LookupEnvironment environment ( ) { return environment ; } public boolean isRawSubstitution ( ) { return false ; } public TypeBinding substitute ( TypeVariableBinding typeVariable ) { return typeVariable == ( replaced ) ? replacer : typeVariable ; } } if ( ( substituteMethod . returnType ) instanceof TypeVariableBinding ) { return ( ( ( TypeVariableBinding ) ( substituteMethod . returnType ) ) . boundCheck ( new ReturnTypeSubstitution ( substituteMethod . returnType , existingMethod . returnType ) , existingMethod . returnType ) ) == ( OK ) ; } else if ( ( substituteMethod . returnType ) instanceof ParameterizedTypeBinding ) { if ( ! ( ( existingMethod . returnType ) instanceof ParameterizedTypeBinding ) ) { return false ; } ParameterizedTypeBinding substituteReturnType = ( ( ParameterizedTypeBinding ) ( substituteMethod . returnType ) ) ; ParameterizedTypeBinding existingReturnType = ( ( ParameterizedTypeBinding ) ( existingMethod . returnType ) ) ; <START_BUG> if ( ( substituteReturnType . type ( ) ) != ( existingReturnType . type ( ) ) ) <END_BUG> return false ; for ( int i = 0 ; i < ( substituteReturnType . arguments . length ) ; i ++ ) { TypeBinding substituteArgumentType ; TypeBinding existingArgumentType ; if ( ! ( ( existingArgumentType = existingReturnType . arguments [ i ] ) . isCompatibleWith ( ( substituteArgumentType = substituteReturnType . arguments [ i ] ) ) ) ) { if ( substituteArgumentType instanceof TypeVariableBinding ) { if ( ( ( ( TypeVariableBinding ) ( substituteArgumentType ) ) . boundCheck ( new ReturnTypeSubstitution ( substituteArgumentType , existingArgumentType ) , existingArgumentType ) ) != ( OK ) ) { return false ; } } else { return false ; } } } return true ; } return false ; } SimpleSet findSuperinterfaceCollisions ( ReferenceBinding superclass , ReferenceBinding [ ] superInterfaces ) { } boolean reportIncompatibleReturnTypeError ( MethodBinding currentMethod , MethodBinding inheritedMethod ) { } void verify ( SourceTypeBinding someType ) { } }

Fix:
if ( ( substituteReturnType . actualType ( ) ) != ( existingReturnType . actualType ( ) ) )