anchor.diff:                              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
  
positive.code:             // 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
                  comp.ResizeJunctions length junctions ecs
  
              // allocate component
              let index = freeIndex in freeIndex <- inc freeIndex
  
negative.code: 
      member this.IndexHierarchical nodeId entityId =
          let (found, system) = systemDict.TryGetValue nodeId
          if not found then raise (ArgumentOutOfRangeException "nodeId")
          system.IndexCorrelated entityId
  
      member this.RegisterHierarchical comp nodeId entityId ecs =
  