1 import Base 2 import ./change_tick.bend as Tick 3 import ./restore_data.bend as R 4 import ./snapshot_leaf.bend as Leaf 5 import ./ordinary_declaration.bend as Identity 6 import ./persistence_declaration.bend as Decl 7 import ./column.bend as Col 8 import ./world.bend as W 9 import ./decode_data.bend as D 10 11 type State is Type:State{removed:List

} 12 def stage(~State:Type,~Custom:Data,state:State,position:R.Position,field:D.Field) -> State & R.Dispatch: 13 (state,R.Unhandled{}) 14 def release(~State:Type,state:State) -> State:state 15 def insert(~S:Data,~P:Type,~identity:Identity.Declaration,owner:Leaf.TransientComponent,unit:Unit,state:State

,bindings:List<&2,R.Binding>,tick:Tick.Tick) -> (Leaf.TransientComponent & Unit) & State

: 16 ((owner,unit),state) 17 def resource_insert(~S:Data,~P:Type,~identity:Identity.Declaration,unit:Unit,owner:Leaf.TransientResource,state:Unit,bindings:List<&2,R.Binding>,tick:Tick.Tick) -> (Unit & Leaf.TransientResource) & Unit: 18 ((unit,owner),state) 19 def commit(~P:Type,state:State

) -> State

: 20 State{[]} 21 def take_recovery(~State:Type,state:State) -> State & Unit: 22 (state,Unit{})