Multiple dispatching: multi-methods
Can specialize on more than the first argument
method =(p1@Point,p2@Point) {
p1.x = p2.x & {p1.y = p2.y} }
method =(p1@ColorPoint,p2@ColorPoint) {
resend & {p1.color = p2.color}}
let y1 = new_color_point(…);
let y2 = new_color_point(…);
print(x1 = x2); print(x1 = y2);
print(y1 = x2); print(y1 = y2);