Consider the following code. class Apple { // rep-inv: name…

Consider the following code. class Apple { // rep-inv: name != null private String name; public Apple (String name) { if (name == null) throw new NPE(…); this.name = name; } @Override public boolean equals (Object o) { if (!(o instanceof Apple)) { return false; } Apple a = (Apple) o; return name.equals(a.name); } @Override public int hashCode() { … } @Override public String toString() { return name; } } class AppleTracker extends Apple { private static Set inventory = new HashSet (); public AppleTracker (String name) { super(name); inventory.add(name);} public static Set getInventory() { return Collections.unmodifiableSet(inventory);} } // client code Apple a = new Apple(“Winesap”); AppleTracker at1 = new AppleTracker(“Winesap”); AppleTracker at2 = new AppleTracker(“Fuji”); Is the below true or false?at1.equals(a) and a.equals(at2) are both true, but at1.equals(at2) is false.