 <PRIVATE
 : struct-slot-values-quot ( class -- quot )
     struct-slots
-    [ name>> reader-word 1quotation ] map
-    '[ [ _ cleave ] output>array ] ;
+    [ name>> reader-word 1quotation ] map dup length
+    '[ _ cleave _ narray ] ;
 
 : define-struct-slot-values-method ( class -- )
     [ \ struct-slot-values ] [ struct-slot-values-quot ] bi

        [ forget-struct-slot-accessors ]
        [ forget-struct-slot-values-method ]
        [ forget-clone-method ]
        [ forget-equal-method ]
        [ { "c-type" "layout" "struct-size" } remove-word-props ]
        [ call-next-method ]
    } cleave ;

    ] [ drop f ] if ;

: define-struct-methods ( class -- )
    [ define-struct-slot-values-method ] [ define-clone-method ] bi ;

: check-struct-slots ( slots -- )
    [ type>> lookup-c-type drop ] each ;
