boolean (Object o) { if (o instanceof RandomAccess && o instanceof List) { List<?> other = (List<?>)o; if (size() != other.size()) { return false; } for (int i = 0; i < other.size(); i++) { Object o1 = other.get(i); Object o2 = get(i); if (!Objects.equals(o1, o2)) { return false; } } return true; } return super.equals(o); }