( (Point Object (field x 0) (field y 0) (method setx (newx) (block (:= x newx) this)) (method sety (newy) (block (:= y newy) this)) (method getx () x) (method gety () y) (method size () 1) (method grade () (* (@ this size) (+ x y))) ) (Colorpoint Point (field c (new Color)) (method setc (newc) (block (:= c newc) this)) (method size () (@ c hue))) (Color Object) (Blue Color (method hue () 1)) (Red Color (method hue () 2)) (Green Color (method hue () 3)) ) (local (cp (@ (@ (new Colorpoint) setc (new Red)) setx 10)) (@ cp grade)) {should evaluate to 20}