class A { void foo(){} // Compliant } interface I { public void finalize(); // Noncompliant [[sc=15;ec=23]] {{Add the "@Override" annotation above this method signature}} void bar(); // Compliant } interface J extends I { public void finalize(); // Noncompliant void bar(); // Noncompliant } interface K extends J { public boolean equals(Object obj); // Noncompliant } class B extends A implements I { void foo() {} // Noncompliant void bar() {} // Noncompliant @Override protected void finalize() { // Compliant super.finalize(); } } class C extends A implements I { @java.lang.Override void foo() {} @Deprecated @Override void bar() {} }