 USING: accessors alien alien.c-types alien.data alien.parser
 arrays assocs byte-arrays classes classes.parser classes.private
 classes.struct.bit-accessors classes.tuple classes.tuple.parser
-classes.tuple.private combinators combinators.smart
-cpu.architecture definitions delegate.private effects
-functors.backend generalizations generic generic.parser io
-kernel kernel.private lexer libc math math.order parser
+classes.tuple.private combinators combinators.short-circuit
+combinators.smart 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.private slots slots.private
 specialized-arrays stack-checker.dependencies summary vectors
 vocabs.loader vocabs.parser words ;

    ] [ drop f ] if ;

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

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

    [ struct f redefine-tuple-class ] [ make-final ] bi ;

: resize-underlying ( struct -- )
    [ 2 slot dup byte-array? ]
    [ class-of "struct-size" word-prop '[ _ swap resize ] [ drop f ] if ]
    [ 2 set-slot ] tri ;

M: struct update-tuple
