sclass Size implements Comparable { int x, y; *() {} *(Point p) { x = p.x; y = p.y; } *(int *x, int *y) {} Point getPoint() { ret new Point(x, y); } public bool equals(O o) { ret o instanceof Size && x == o/Size.x && y == o/Size.y; } public int hashCode() { ret boostHashCombine(x, y); } // compare in scan order public int compareTo(Size p) { if (y != p.y) ret cmp(y, p.y); ret cmp(x, p.x); } public S toString() { ret x + ", " + y; }