         { [ dup struct-array? ] [ underlying>> ] }
     } cond ;
 
-: marshall-void* ( obj -- alien )
-    marshall-pointer ;
 : marshall-primitive ( n -- n )
     [ bool>arg ] ptr-pass-through ;
 
-: marshall-void** ( obj -- alien )
-    [ marshall-void* ] map >void*-array malloc-underlying ;
+ALIAS: marshall-void* marshall-pointer
+
+: marshall-void** ( seq -- alien )
+    [ marshall-void* ] void*-array{ } map-as malloc-underlying ;
 
 : (marshall-char*-or-string) ( n/string -- alien )
     dup string?

: pointer-unmarshaller ( type -- quot )
    type-sans-pointer current-vocab lookup [
        dup superclasses [ \ alien-wrapper = ] any? [
            '[ _ new swap >>underlying dynamic-cast ]
        ] [ drop [ ] ] if
    ] [ [ ] ] if* ;


        [ drop f ]
    } case ;

: marshall-non-pointer ( alien-wrapper/byte-array -- byte-array )
    {
        { [ dup byte-array? ] [ ] }
        { [ dup alien-wrapper? ]
