@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Any)) return false; final Any<?> other = (Any<?>) obj; if (type() != other.type()) return false; if (size() != other.size()) return false; for (int i = 0; i < size(); ++i) { if (!item(i).equals(other.item(nameOf(i)))) return false; } return true; }