@Canonical
@TupleConstructor(force = true)
@ToString(includeNames = true)
class Point {
    Point(Point p) { x = p.x; y = p.y }
    void print() { println toString() }
    Number x
    Number y
}

@Canonical
@TupleConstructor(force = true)
@ToString(includeNames = true, includeSuper = true)
class Circle extends Point {
    Circle(Circle c) { super(c); r = c.r }
    void print() { println toString() }
    Number r
}