: swap! ( struct -- struct ) [ [ >c-ptr ] [ class struct-slots ] bi [ [ offset>> dup ] [ type>> heap-size + ] bi rot reverse! drop ] with each ] keep ;