class A { private abstract void f(); private void f() { } private void f() { return 0; } private void f() { // Noncompliant [[sc=16;ec=17]] {{Remove this method to simply inherit it.}} super.f(); } private void f() { // Noncompliant return super.f(); } private void f() { super.f(0); } private void f(int a) { super.f(); } private void f(int a) { // Noncompliant super.f(a); } private int f(int a) { // Noncompliant return super.f(a); } private int f(int a) { super.f(a); return a; } private void f(int a, int b) { super.f(b, a); } private void f(int... a) { // Noncompliant super.f(a); } private void f() { foo(); } private void f() { return; } private <T> void f() { // Noncompliant super.f(); } public A() { super(); } @SomeCrazyAnnotation private void f() { super.f(); } @Override public void f() { // Noncompliant super.f(); } @Override @SomeCrazyAnnotation private void f() { super.f(); } @SomeCrazyAnnotation @Override private void f() { super.f(); } @SomeCrazyAnnotation private <T> void f() { super.f(); } @foo.Deprecated private <T> void f() { super.f(); } @Override @Override private <T> void f() { // Noncompliant super.f(); } @Override public boolean equals(Object obj) { // Noncompliant return super.equals(obj); } @Override public int hashCode() { // Noncompliant return super.hashCode(); } @Override public String toString() { // Noncompliant return super.toString(); } @Override public final boolean equals(Object obj) { //Compliant, equals is final return super.equals(obj); } @Override public final int hashCode() { return super.hashCode(); } @Override public final String toString() { return super.toString(); } protected void bar1() {} protected void bar2() {} void bar3() {} void bar4() {} public void bar5() {} } class B extends A { @Override public void bar1() { // Compliant super.bar1(); } @Override protected void bar2() { // Noncompliant super.bar2(); } @Override public void bar3() { // Compliant super.bar3(); } @Override void bar4() { // Noncompliant super.bar4(); } } class C extends A { @Override void bar2() { // Compliant (but does not compile... can not reduce visibility [protected -> package]) super.bar2(); } @Override public void bar5() { // Noncompliant super.bar5(); } @Override protected void bar4() { super.bar4(); } }