boolean (Object o) { if (o == this) { return true; } if (o instanceof SmartList) { return equalsWithSmartList((SmartList<?>)o); } if (o instanceof ArrayList) { return equalsWithArrayList((ArrayList<?>)o); } return super.equals(o); }