;; deconstructor (bind-func Circle:[!b,Shape{!a}*,[!b,!a,!a,!a]*,[!b]*]* (lambda (s success fail) (if (<> (tref s 0) 1) (fail) (let ((c:ShapeCircle* (tref s 1))) (success (tref c 0) (tref c 1) (tref c 2))))))