anchor.diff:              | ArrayObjsBuffered buffered -> buffered.ArrayObjsUnbuffered |> Seq.cast<'c ArrayRef> |> Seq.toArray
           | (false, _) -> [||]
   
  -    member this.WithComponentArraysBuffered<'c when 'c : struct and 'c :> 'c Component> fn =
  +    member this.WithComponentArraysBufferedEffect<'c when 'c : struct and 'c :> 'c Component> fn (world : 'w) =
           let componentName = typeof<'c>.Name
           match arrayObjss.TryGetValue componentName with
           | (true, arrayObjs) ->
               match arrayObjs with
  -            | ArrayObjs unbuffered -> unbuffered |> Seq.cast<'c ArrayRef> |> Seq.toArray |> fn
  +            | ArrayObjs unbuffered ->
  +                let arefs = unbuffered |> Seq.cast<'c ArrayRef> |> Seq.toArray
  +                fn arefs world
               | ArrayObjsBuffered buffered ->
                   lock arrayObjs $ fun () ->
                       let arefsBuffered = buffered.ArrayObjsBuffered |> Seq.cast<'c ArrayRef> |> Seq.toArray
  -                    fn arefsBuffered
  -        | (false, _) -> ()
  +                    fn arefsBuffered world
  +        | (false, _) -> world
  +
  +    member this.WithComponentArraysBuffered<'c when 'c : struct and 'c :> 'c Component> fn =
  +        this.WithComponentArraysBufferedEffect<'c> (fun arefsBuffered world -> fn arefsBuffered; world)
   
       member this.BufferComponentArrays<'c when 'c : struct and 'c :> 'c Component> () =
           let componentName = typeof<'c>.Name
  
positive.code:     new (buffered, ecs) = SystemUncorrelated (typeof<'c>.Name, buffered, ecs)
  
      member this.Components with get () = components
      member this.WithComponentsBuffered fn = lock componentsBuffered (fun () -> fn componentsBuffered)
  
      member this.IndexUncorrelated index =
          if index >= freeIndex then raise (ArgumentOutOfRangeException "index")
  
negative.code:     new (buffered, ecs) = SystemCorrelated (typeof<'c>.Name, buffered, ecs)
  
      member this.Components with get () = components
      member this.WithComponentsBuffered (fn : 'c ArrayRef -> unit) = lock componentsBuffered (fun () -> fn componentsBuffered)
      member this.WithComponentsBufferedEffect (fn : 'c ArrayRef -> 'w -> 'w) world = lock componentsBuffered (fun () -> fn componentsBuffered world)
  
      member this.Junctions with get () = junctions
      member this.WithJunctionsBuffered (fn : 'c ArrayRef -> unit) = lock junctionsBuffered (fun () -> fn junctionsBuffered)
      member this.WithJunctionsBufferedEffect (fn : 'c ArrayRef -> 'w -> 'w) world = lock junctionsBuffered (fun () -> fn junctionsBuffered world)
  
      member internal this.Compact ecs =
  
  