Macro With-Slot-Bindings

Part of:

package metabang.utilities
( with-slot-bindings < slots > < instance > &body < body > )

makes this: (with-slot-bindings (((x x2) double-float) ((y y2) double-float)) location-2 body)
into this:
(let ((x2 (ensure-type (slot-value location-2 'x) 'double-float))
(y2 (ensure-type (slot-value location-2 'y) 'double-float)))
body)

If the first item of the binding-spec [(x x2) above] is a symbol instead of a cons,
that symbol is the name of the slot and is bound in the let.