sclass PairIC { S a; S b; *() {} *(S *a, S *b) {} public int hashCode() { ret hashCodeFor(a) + 2*hashCodeFor(b); } public bool equals(O o) { if (o == this) true; if (!(o instanceof PairIC)) false; PairIC t = cast o; ret eq(a, t.a) && eq(b, t.b); } toString { ret "<" + a + ", " + b + ">"; } }