anchor.diff:                  freeIndex <- inc freeIndex
                   index
   
  +    member private this.FreeIndex index =
  +        if index = dec freeIndex
  +        then freeIndex <- dec freeIndex
  +        else freeList.Add index |> ignore<bool>
  +
  +    member this.Register (comps : Dictionary<string, obj>) =
  +        let index = this.AllocIndex
  +        for compEntry in comps do
  +            stores.[compEntry.Key].SetItem index compEntry.Value
  +        index
  +
       member this.Unregister (index : int) =
           for storeEntry in stores do
               storeEntry.Value.ZeroItem index
  -        if index = dec freeIndex then
  -            freeIndex <- dec freeIndex
  -        else
  -            freeList.Add index |> ignore<bool>
   
       member this.GetComponents index =
           let comps = dictPlus<string, obj> HashIdentity.Structural []
  
positive.code:         comps
  
      member this.Read count (stream : FileStream) =
          for storeEntry in stores do
              let store = storeEntry.Value
              store.Read count freeIndex stream
          freeIndex <- freeIndex + count
  
  /// Describes a means to query components.
  and IQuery =
  
negative.code:     member this.ComponentNames = hashSetPlus HashIdentity.Structural stores.Keys
      member this.Terms = terms
  
      member private this.Grow () =
          for storeEntry in stores do
              storeEntry.Value.Grow ()
  
      member private this.AllocIndex =
          if freeList.Count > 0 then
              let index = Seq.head freeList
              freeList.Remove index |> ignore<bool>
              index
          else
              match Seq.tryHead stores with
              | Some headStoreEntry ->
                  let index = freeIndex
                  if index = headStoreEntry.Value.Length then this.Grow ()
                  freeIndex <- inc freeIndex
                  index
              | None ->
  