     ] [ drop f ] if ;
 
 : define-struct-methods ( class -- )
-    {
-        [ define-struct-slot-values-method ]
-        [ define-clone-method ]
-        [ define-equal-method ]
-    } cleave ;
+    [ define-struct-slot-values-method ] [ define-clone-method ] bi ;
 
 : check-struct-slots ( slots -- )
     [ type>> lookup-c-type drop ] each ;


: forget-struct-slot-values-method ( class -- )
    \ struct-slot-values ?lookup-method forget ;

: struct-equals-quot ( class -- quot )
    dup struct-slots
    [ name>> reader-word 1quotation '[ [ @ ] same? ] ] map
    '[ over _ instance? [ _ 2&& ] [ 2drop f ] if ] ;

: define-equal-method ( class -- )
    [ \ equal? ] [ struct-equals-quot ] bi define-inline-method ;

: forget-equal-method ( class -- )
    \ equal? ?lookup-method forget ;

: clone-underlying ( struct -- byte-array )
    binary-object memory>byte-array ; inline

arrays assocs byte-arrays classes classes.parser classes.private
classes.struct.bit-accessors classes.tuple classes.tuple.parser
classes.tuple.private combinators combinators.short-circuit
cpu.architecture definitions delegate.private effects
functors.backend generalizations generic generic.parser io
kernel kernel.private lexer libc math math.order parser
quotations sequences sequences.generalizations sequences.private
slots slots.private specialized-arrays
stack-checker.dependencies summary vectors vocabs.loader
vocabs.parser words ;

SPECIALIZED-ARRAY: uchar

