;; deconstructor
(bind-func Rectangle:[!b,Shape{!a}*,[!b,!a,!a,!a,!a]*,[!b]*]*
(lambda (s success fail)
(if (<> (tref s 0) 2)
(fail)
(let ((r:ShapeRectangle* (tref s 2)))
(success (tref r 0) (tref r 1) (tref r 2) (tref r 3))
(println "bugfixer!")))))