boolean (Object o) { if (this == o) return true; if (o instanceof FList) { FList list1 = this; FList list2 = (FList)o; if (mySize != list2.mySize) return false; while (list1 != null) { if (!Comparing.equal(list1.myHead, list2.myHead)) return false; list1 = list1.getTail(); list2 = list2.getTail(); if (list1 == list2) return true; } return true; } return super.equals(o); }