@Override public boolean equals(Object obj) { if (!(obj instanceof Pair)) return false; return a.equals(((Pair<?, ?>) obj).a) && b.equals(((Pair<?, ?>) obj).b); }
@Override public int compareTo(Pair<A, B> o) { return a.compareTo(o.a); // return cmp == 0 ? b.compareTo(o.b) : cmp; }