def product_join
bendvy-ecs-core@0.1.0.4 · restore_schema.bend:62
import bendvy-ecs-core@0.1.0.4/restore_schema.bend as RestoreSchema
import Base
import bendvy-ecs-core@0.1.0.4/change_tick.bend as Tick
import bendvy-ecs-core@0.1.0.4/restore_data.bend as R
import bendvy-ecs-core@0.1.0.4/restore_product.bend as Product
import bendvy-ecs-core@0.1.0.4/ordinary_schema.bend as Ordinary
import bendvy-ecs-core@0.1.0.4/owner_product.bend as Owner
import bendvy-ecs-core@0.1.0.4/decode_data.bend as D
import bendvy-ecs-core@0.1.0.4/world.bend as W
62def product_join(~S:Data,~LC:Type,~LR:Type,~RC:Type,~RR:Type,~L:Type,~Right:Type,~Custom:Data,~stageLeft:L -> R.Position -> D.Field -> L & R.Dispatch<Custom>,~releaseLeft:L -> L,~clearLeft:LC -> W.Handle<S> -> LC & List<&2,R.Change<S>>,~insertLeft:LC -> LR -> L -> List<&2,R.Binding<S>> -> Tick.Tick -> (LC & LR) & L,~stageRight:Right -> R.Position -> D.Field -> Right & R.Dispatch<Custom>,~releaseRight:Right -> Right,~clearRight:RC -> W.Handle<S> -> RC & List<&2,R.Change<S>>,~insertRight:RC -> RR -> Right -> List<&2,R.Binding<S>> -> Tick.Tick -> (RC & RR) & Right,~LRecovery:Type,~RRecovery:Type,~commitLeft:L -> L,~commitRight:Right -> Right,~takeLeft:L -> L & LRecovery,~takeRight:Right -> Right & RRecovery,left:Ordinary.Schema<S,LC,LR>,right:Ordinary.Schema<S,RC,RR>) -> Schema<S,Owner.Owner<LC,RC>,Owner.Owner<LR,RR>,Owner.Owner<L,Right>,Custom,product_stage(~S,~LC,~LR,~RC,~RR,~L,~Right,~Custom,~stageLeft,~releaseLeft,~clearLeft,~insertLeft,~stageRight,~releaseRight,~clearRight,~insertRight),Product.release(~L,~Right,~releaseLeft,~releaseRight),product_clear(~S,~LC,~RC,~clearLeft,~clearRight),product_insert(~S,~LC,~LR,~RC,~RR,~L,~Right,~Custom,~stageLeft,~releaseLeft,~clearLeft,~insertLeft,~stageRight,~releaseRight,~clearRight,~insertRight),Owner.Owner<LRecovery,RRecovery>,Product.release(~L,~Right,~commitLeft,~commitRight),Product.take_recovery(~L,~Right,~LRecovery,~RRecovery,~takeLeft,~takeRight)>:
63 Schema{Ordinary.product(~S,~LC,~LR,~RC,~RR,left,right)}