     [ 2nip ] 3tri define-declared ;
 
 MACRO: typed ( quot word effect -- quot' )
-    [ effect-in-types (depends-on) dup typed-stack-effect? [ typed-inputs ] [ 2drop ] if ] 
+    [ effect-in-types dup typed-stack-effect? [ typed-inputs ] [ 2drop ] if ] 
     [
-        nip effect-out-types (depends-on) dup typed-stack-effect?
+        nip effect-out-types dup typed-stack-effect?
         [ [ unboxed-types ] [ make-boxer ] bi '[ @ _ declare @ ] ] [ drop ] if
     ] 2bi ;
 


! defining typed words

: (depends-on) ( types -- types )
    dup [ inlined-dependency depends-on ] each ; inline

MACRO: (typed) ( word def effect -- quot )
    [ swap ] dip
    [
        nip effect-in-types (depends-on) swap
        [ [ unboxed-types ] [ make-boxer ] bi ] dip
        '[ _ declare @ @ ]
    ]
    [
        effect-out-types (depends-on)
        dup typed-stack-effect? [ typed-outputs ] [ 2drop ] if
    ] 2bi ;



: boxer ( type -- quot )
    dup unboxable-tuple-class?
    [
        dup dup tuple-layout depends-on-tuple-layout
        [ all-slots [ class>> ] map make-boxer ]
        [ [ boa ] curry ]
        bi compose
    ]
    [ drop [ ] ] if ;

: make-boxer ( types -- quot )
