# OBJECT wrapper class for cells
[hear] (class cell (initial-value)
              (field content (make-cell (initial-value)))
              (method get (get! (content)))
              (method set (lambda (new-value)
                    (set! (content) (new-value))))
              (method reset (self set (initial-value)))
              (method unknown (lambda (x) ((objectify (self get)) (x)))));

[hear] (define cell-test1 (cell new 15));

[hear] (= 15 (cell-test1 get));

[hear] (cell-test1 set 82);

[hear] (= 82 (cell-test1 get));

[hear] (define cell-test2 (cell new (point new 120 150)));

[hear] (define cell-test3 (cell new (point new 300 300)));

[hear] (cell-test2 + (cell-test3) = (point new 420 450));

[hear] (not (cell-test2 = (cell-test3)));

[hear] (cell-test3 set (cell-test2));

[hear] (cell-test2 = (cell-test3));