anchor.diff:              // ensure there is space in the arrays
               if freeIndex >= components.Length then
                   let length = components.Length * Constants.Ecs.ArrayGrowth
  -                let arr = Array.zeroCreate length
  -                components.Array.CopyTo (arr, 0)
  -                components.Array <- arr
  +                let arr = Array.zeroCreate length in components.Array.CopyTo (arr, 0); components.Array <- arr
                   comp.ResizeJunctions length junctions ecs
  +                lock componentsBuffered (fun () ->
  +                    let arr = Array.zeroCreate length in componentsBuffered.Array.CopyTo (arr, 0); componentsBuffered.Array <- arr)
  +                lock junctionsBuffered (fun () ->
  +                    comp.ResizeJunctions length junctionsBuffered ecs)
   
               // allocate component
               let index = freeIndex in freeIndex <- inc freeIndex
  
positive.code:                             else readOnlyAref.Array <- Array.copy writableAref.Array)
          | (false, _) -> ()
  
      //member this.BufferComponentArraysAll () =
      //    for arrayObjs in arrayObjss.Values do
      //        this.BufferComponentArrays<?> ()
  
      member this.WithComponentArraysBuffered<'c when 'c : struct and 'c :> 'c Component> fn =
          let componentName = typeof<'c>.Name
          match arrayObjss.TryGetValue componentName with
  
negative.code: 
      member this.IndexCorrelatedI entityId =
          let (found, index) = correlations.TryGetValue entityId
          if not found then raise (ArgumentOutOfRangeException "entityId")
          index
  
      member this.IndexCorrelated entityId =
  