Buggy code:
public class MethodDeclaration extends AbstractMethodDeclaration { public TypeReference returnType ; public TypeParameter [ ] typeParameters ; public MethodDeclaration ( CompilationResult compilationResult ) { } public void analyseCode ( ClassScope classScope , InitializationFlowContext initializationContext , FlowInfo flowInfo ) { } public boolean isMethod ( ) { } public void parseStatements ( Parser parser , CompilationUnitDeclaration unit ) { } public StringBuffer printReturnType ( int indent , StringBuffer output ) { } public void resolveStatements ( ) { if ( ( ( this . returnType ) != null ) && ( ( this . binding ) != null ) ) { this . returnType . resolvedType = this . binding . returnType ; } if ( CharOperation . equals ( this . scope . enclosingSourceType ( ) . sourceName , this . selector ) ) { this . scope . problemReporter ( ) . methodWithConstructorName ( this ) ; } if ( ( this . typeParameters ) != null ) { for ( int i = 0 , length = this . typeParameters . length ; i < length ; i ++ ) { this . typeParameters [ i ] . resolve ( this . scope ) ; } } final CompilerOptions compilerOptions = this . scope . compilerOptions ( ) ; checkOverride : { if ( ( this . binding ) == null ) break checkOverride ; long complianceLevel = compilerOptions . complianceLevel ; if ( complianceLevel < ( ClassFileConstants . JDK1_5 ) ) break checkOverride ; int bindingModifiers = this . binding . modifiers ; boolean hasOverrideAnnotation = ( ( this . binding . tagBits ) & ( TagBits . AnnotationOverride ) ) != 0 ; if ( hasOverrideAnnotation ) { if ( ( bindingModifiers & ( ( ClassFileConstants . AccStatic ) | ( ExtraCompilerModifiers . AccOverriding ) ) ) == ( ExtraCompilerModifiers . AccOverriding ) ) break checkOverride ; if ( ( complianceLevel >= ( ClassFileConstants . JDK1_6 ) ) && ( ( bindingModifiers & ( ( ClassFileConstants . AccStatic ) | ( ExtraCompilerModifiers . AccImplementing ) ) ) == ( ExtraCompilerModifiers . AccImplementing ) ) ) break checkOverride ; <START_BUG> this . scope . problemReporter ( ) . methodMustOverride ( this ) ; <END_BUG> } else if ( ( ! ( this . binding . declaringClass . isInterface ( ) ) ) && ( ( bindingModifiers & ( ( ClassFileConstants . AccStatic ) | ( ExtraCompilerModifiers . AccOverriding ) ) ) == ( ExtraCompilerModifiers . AccOverriding ) ) ) { this . scope . problemReporter ( ) . missingOverrideAnnotation ( this ) ; } } switch ( TypeDeclaration . kind ( this . scope . referenceType ( ) . modifiers ) ) { case TypeDeclaration . ENUM_DECL : if ( ( this . selector ) == ( TypeConstants . VALUES ) ) break ; if ( ( this . selector ) == ( TypeConstants . VALUEOF ) ) break ; case TypeDeclaration . CLASS_DECL : if ( ( ( this . modifiers ) & ( ExtraCompilerModifiers . AccSemicolonBody ) ) != 0 ) { if ( ( ( this . modifiers ) & ( ClassFileConstants . AccNative ) ) == 0 ) if ( ( ( this . modifiers ) & ( ClassFileConstants . AccAbstract ) ) == 0 ) this . scope . problemReporter ( ) . methodNeedBody ( this ) ; } else { if ( ( ( ( this . modifiers ) & ( ClassFileConstants . AccNative ) ) != 0 ) || ( ( ( this . modifiers ) & ( ClassFileConstants . AccAbstract ) ) != 0 ) ) this . scope . problemReporter ( ) . methodNeedingNoBody ( this ) ; } } super . resolveStatements ( ) ; if ( ( compilerOptions . getSeverity ( CompilerOptions . OverridingMethodWithoutSuperInvocation ) ) != ( ProblemSeverities . Ignore ) ) { if ( ( this . binding ) != null ) { int bindingModifiers = this . binding . modifiers ; if ( ( ( bindingModifiers & ( ( ExtraCompilerModifiers . AccOverriding ) | ( ExtraCompilerModifiers . AccImplementing ) ) ) == ( ExtraCompilerModifiers . AccOverriding ) ) && ( ( ( this . bits ) & ( ASTNode . OverridingMethodWithSupercall ) ) == 0 ) ) { this . scope . problemReporter ( ) . overridesMethodWithoutSuperInvocation ( this . binding ) ; } } } } public void traverse ( ASTVisitor visitor , ClassScope classScope ) { } public TypeParameter [ ] typeParameters ( ) { } }

Fix:
this . scope . problemReporter ( ) . methodMustOverride ( this , complianceLevel ) ;