anchor.diff:      (correlatedSystemNames : string array) =
       inherit SystemCorrelated<'t, 'w> ()
   
  -    let mutable components = [||] : 't array
  -    let mutable freeIndex = 0
       let mutable junctionsOpt = None : Dictionary<string, 'w System> option
  -    let freeList = Queue<int> ()
  -    let correlations = dictPlus [] : Dictionary<Guid, int>
   
       member this.GetJunctions getSystem (ecs : 'w Ecs) =
           match junctionsOpt with
  
positive.code:             junctions
  
      override this.Register entityId getSystem ecs =
          match Dictionary.tryGetValue entityId correlations with
          | (false, _) ->
              let junctions = this.GetJunctions getSystem ecs
              let comp = this.Junction junctions entityId ecs
              if freeList.Count = 0 then
                  if freeIndex < components.Length - 1 then
                      components.[freeIndex] <- comp
                      freeIndex <- inc freeIndex
                  else
                      let arr = Array.zeroCreate (components.Length * 2)
                      components.CopyTo (arr, 0)
                      components <- arr
                      components.[freeIndex] <- comp
                      freeIndex <- inc freeIndex
                  let index = dec freeIndex
                  correlations.Add (entityId, index)
                  index
              else
                  let index = freeList.Dequeue ()
                  components.[index] <- comp
                  index
          | (true, index) ->
              let mutable comp = components.[index]
              comp.RefCount <- inc comp.RefCount
              index
  
      override this.Unregister entityId =
          match correlations.TryGetValue entityId with
          | (true, index) ->
              if index <> freeIndex then
                  components.[index].RefCount <- dec components.[index].RefCount
                  if components.[index].RefCount = 0 then freeList.Enqueue index
              else freeIndex <- dec freeIndex
              true
          | (false, _) -> false
  
  
negative.code:     let freeList = Queue<int> ()
      let correlations = dictPlus [] : Dictionary<Guid, int>
      
      member this.Components with get () = components and internal set value = components <- value
      member this.FreeIndex with get () = freeIndex and internal set value = freeIndex <- value
      member internal this.FreeList with get () = freeList
      member internal this.Correlations with get () = correlations
  
      member this.GetComponentIndex entityId =
          let (found, index) = correlations.TryGetValue entityId
  