class A { private String myString; private Integer myInteger; private A myObject; @Override protected void finalize() { myString = null; // Noncompliant [[sc=16;ec=20]] {{Remove this nullification of "myString".}} myInteger = null; // Noncompliant myObject = null; // Noncompliant String otherString; otherString = null; // Compliant myString = ""; // Compliant myInteger = 42; // Compliant myObject = new A(); // Compliant this.myString = null; // Noncompliant this.myInteger = null; // Noncompliant this.myObject = null; // Noncompliant } void finalize(Long value) { value = null; // Compliant } } class B { protected String myString; protected void finalize() { myString = null; // Noncompliant } } class C extends B { private Integer myInteger; private String[] myArrayOfStrings = new String[3]; @Override protected void finalize() { myString = null; // Noncompliant myInteger = null; // Noncompliant myArrayOfStrings[0] = null; // Compliant myArrayOfStrings = null; // Noncompliant class MyInnerClass { private Object myObject; public void finalize() { myString = null; // Noncompliant myObject = null; // Noncompliant myInteger = null; // Noncompliant myArrayOfStrings = null; // Noncompliant } } } } class D { Integer myInteger; private boolean myMethod() { class MyInnerClass { public void finalize() { myInteger = null; // Noncompliant new D().myInteger = null; // Compliant D d = new D(); d.myInteger = null; // Compliant unknownVariable = null; // Compliant } } return false; } public void finalize(boolean param) { } } class E extends D { @Override public void finalize(boolean param) { } }