: FactorSmokeBound>smoke-binding ( alien -- object ) [ ] dip { [ moduleName>> >>module-name ] [ NullModuleIndex>> >>null-module-index drop ] [ [ classes>> ] keep numClasses>> >>classes drop ] [ [ methodMaps>> ] keep numMethodMaps>> >>method-maps drop ] [ [ methodNames>> ] keep numMethodNames>> >>method-names drop ] [ [ types>> ] keep numTypes>> >>types drop ] [ castFn>> >>alien-cast-fn drop ] [ binding>> >>binding drop ] [ smoke>> >>smoke ] } 2cleave ;