anchor.diff:          for storeEntry in stores do
               comps.Add (storeEntry.Key, storeEntry.Value.[index])
           comps
  +
  +    member this.Read count (stream : FileStream) =
  +        for storeEntry in stores do
  +            let store = storeEntry.Value
  +            store.Read count freeIndex stream
  +        freeIndex <- freeIndex + count
   
   type [<StructuralEquality; NoComparison>] 'w SystemSlot =
       { SystemIndex : int
  
positive.code:         abstract SetItem : int -> obj -> unit
          abstract ZeroItem : int -> unit
          abstract Grow : unit -> unit
          end
  
  type Store<'c when 'c : struct and 'c :> 'c Component> (name) =
      let mutable arr = Array.zeroCreate<'c> Constants.Ecs.ArrayReserve
      member this.Item i = &arr.[i]
      member this.Length = arr.Length
      interface Store with
          member this.Length = arr.Length
          member this.Name = name
          member this.Item i = arr.[i] :> obj
          member this.SetItem index compObj = arr.[index] <- compObj :?> 'c
          member this.ZeroItem index = arr.[index] <- Unchecked.defaultof<'c>
          member this.Grow () =
              let arr' = Array.zeroCreate<'c> (arr.Length * 2)
              Array.Copy (arr, arr', arr.Length)
              arr <- arr'
  
  type 'w Query =
      interface
  
negative.code:             if query.CheckCompatibility system then
                  query.RegisterSystem system
          system
  
      member this.ReadComponents count systemId stream =
          match systems.TryGetValue systemId with
          | (true, system) -> system.Read count stream
          | (false, _) -> failwith "Could not find system."
  
      member private this.RegisterNamedComponentInternal<'c when 'c : struct and 'c :> 'c Component> (comp : 'c) compName entityId world =
          match systemSlots.TryGetValue entityId with
  