Buggy code:
public final class MethodVerifier implements TagBits , TypeConstants { SourceTypeBinding type ; HashtableOfObject inheritedMethods ; HashtableOfObject currentMethods ; ReferenceBinding runtimeException ; ReferenceBinding errorException ; LookupEnvironment environment ; public MethodVerifier ( LookupEnvironment environment ) { } private boolean areParametersEqual ( MethodBinding one , MethodBinding two ) { } private boolean areTypesEqual ( TypeBinding one , TypeBinding two ) { } private void checkAbstractMethod ( MethodBinding abstractMethod ) { } private void checkAgainstInheritedMethods ( MethodBinding currentMethod , MethodBinding [ ] methods , int length ) { currentMethod . modifiers |= CompilerModifiers . AccOverriding ; nextMethod : for ( int i = length ; ( -- i ) >= 0 ; ) { MethodBinding inheritedMethod = methods [ i ] ; if ( ( ! ( currentMethod . isAbstract ( ) ) ) && ( inheritedMethod . isAbstract ( ) ) ) currentMethod . modifiers |= CompilerModifiers . AccImplementing ; if ( ! ( areTypesEqual ( currentMethod . returnType , inheritedMethod . returnType ) ) ) { this . problemReporter ( currentMethod ) . incompatibleReturnType ( currentMethod , inheritedMethod ) ; } else if ( ( currentMethod . isStatic ( ) ) != ( inheritedMethod . isStatic ( ) ) ) { this . problemReporter ( currentMethod ) . staticAndInstanceConflict ( currentMethod , inheritedMethod ) ; } else { if ( ( currentMethod . thrownExceptions ) != ( NoExceptions ) ) this . checkExceptions ( currentMethod , inheritedMethod ) ; if ( inheritedMethod . isFinal ( ) ) this . problemReporter ( currentMethod ) . finalMethodCannotBeOverridden ( currentMethod , inheritedMethod ) ; if ( ! ( this . isAsVisible ( currentMethod , inheritedMethod ) ) ) this . problemReporter ( currentMethod ) . visibilityConflict ( currentMethod , inheritedMethod ) ; <START_BUG> if ( inheritedMethod . isViewedAsDeprecated ( ) ) { <END_BUG> if ( ( ! ( currentMethod . isViewedAsDeprecated ( ) ) ) || ( environment . options . reportDeprecationInsideDeprecatedCode ) ) { ReferenceBinding declaringClass = inheritedMethod . declaringClass ; if ( declaringClass . isInterface ( ) ) for ( int j = length ; ( -- j ) >= 0 ; ) if ( ( i != j ) && ( methods [ j ] . declaringClass . implementsInterface ( declaringClass , false ) ) ) continue nextMethod ; this . problemReporter ( currentMethod ) . overridesDeprecatedMethod ( currentMethod , inheritedMethod ) ; } } } } } private void checkExceptions ( MethodBinding newMethod , MethodBinding inheritedMethod ) { } private void checkInheritedMethods ( MethodBinding [ ] methods , int length ) { } private void checkMethods ( ) { } private void checkPackagePrivateAbstractMethod ( MethodBinding abstractMethod ) { } private void computeInheritedMethods ( ) { } private void computeMethods ( ) { } private ReferenceBinding errorException ( ) { } private boolean isAsVisible ( MethodBinding newMethod , MethodBinding inheritedMethod ) { } private boolean isSameClassOrSubclassOf ( ReferenceBinding testClass , ReferenceBinding superclass ) { } private boolean mustImplementAbstractMethod ( MethodBinding abstractMethod ) { } private ProblemReporter problemReporter ( ) { } private ProblemReporter problemReporter ( MethodBinding currentMethod ) { } ReferenceBinding [ ] resolvedExceptionTypesFor ( MethodBinding method ) { } private ReferenceBinding runtimeException ( ) { } public void verify ( SourceTypeBinding someType ) { } public String toString ( ) { } }

Fix:
if ( ( environment . options . reportDeprecationWhenOverridingDeprecatedMethod ) && ( inheritedMethod . isViewedAsDeprecated ( ) ) ) {