anchor.diff:  
       new (ecs) = SystemCorrelated (false, ecs)
   
  -    member this.Correlateds with get () = correlateds
  +    member this.FreeListCount = freeList.Count
  +
  +    member this.Correlateds = correlateds
       member this.WithCorrelatedsBuffered (fn : 'c ArrayRef -> 'w option -> 'w option) worldOpt = lock correlatedsBuffered (fun () -> fn correlatedsBuffered worldOpt)
  +
  +    member this.RewindFreeIndex () =
  +        while freeList.Remove (dec freeIndex) do
  +            freeIndex <- dec freeIndex
   
       member this.IndexJunction<'j when 'j : struct and 'j :> 'j Component> fieldPath = junctionsMapped.[fieldPath] :?> 'j ArrayRef
       member this.WithJunctionBuffered<'j when 'j : struct and 'j :> 'j Component> fn fieldPath (worldOpt : 'w option) = let junction = junctionsBufferedMapped.[fieldPath] :?> 'j ArrayRef in lock junction (fun () -> fn junction worldOpt)
  
positive.code: 
      let mutable comp = comp
  
      member this.Component with get () = &comp
  
      override this.UnregisterComponent _ = false
  
  
negative.code: 
      new (ecs) = SystemUncorrelated (false, ecs)
  
      member this.FreeListCount = freeList.Count
  
      member this.Components = components
      member this.WithComponentsBuffered (fn : 'c ArrayRef -> 'w option -> 'w option) worldOpt = lock componentsBuffered (fun () -> fn componentsBuffered worldOpt)
  
      member this.RewindFreeIndex () =
          while freeList.Remove (dec freeIndex) do
              freeIndex <- dec freeIndex
  
      member this.IndexUncorrelated index =
          if index >= freeIndex then raise (ArgumentOutOfRangeException "index")
  