anchor.diff:  type [<NoEquality; NoComparison; Struct>] EntityRef<'w when 'w :> Freezable> =
       { EntityId : Guid
         EntityEcs : 'w Ecs }
  -    member this.IndexPlus<'c when 'c : struct and 'c :> 'c Component> () : 'c outref =
  -        let systemName = typeof<'c>.Name
  -        let system = this.EntityEcs.IndexSystem<SystemCorrelated<'c, 'w>> systemName
  -        let correlated = system.IndexCorrelated this.EntityId : 'c ComponentRef
  -        &correlated.ComponentAref.Array.[correlated.ComponentIndex]
       member this.Index<'c when 'c : struct and 'c :> 'c Component> () =
           let system = this.EntityEcs.IndexSystem<SystemCorrelated<'c, 'w>> typeof<'c>.Name
           let correlated = system.IndexCorrelated this.EntityId : 'c ComponentRef
           &correlated.ComponentAref.Array.[correlated.ComponentIndex]
  -    member this.ReadPlus<'c when 'c : struct and 'c :> 'c Component> () : 'c outref =
  -        let systemName = typeof<'c>.Name
  -        let system = this.EntityEcs.IndexSystem<SystemCorrelated<'c, 'w>> systemName
  -        let correlated = system.IndexCorrelated this.EntityId : 'c ComponentRef
  -        &correlated.ComponentArefReadOnly.Array.[correlated.ComponentIndex]
  -    member this.Read<'c when 'c : struct and 'c :> 'c Component> () =
  +    member this.IndexPlus<'c when 'c : struct and 'c :> 'c Component> () : 'c outref =
           let system = this.EntityEcs.IndexSystem<SystemCorrelated<'c, 'w>> typeof<'c>.Name
           let correlated = system.IndexCorrelated this.EntityId : 'c ComponentRef
  -        &correlated.ComponentArefReadOnly.Array.[correlated.ComponentIndex]
  +        &correlated.ComponentAref.Array.[correlated.ComponentIndex]
  +    member this.IndexBuffered<'c when 'c : struct and 'c :> 'c Component> () =
  +        let system = this.EntityEcs.IndexSystem<SystemCorrelated<'c, 'w>> typeof<'c>.Name
  +        let correlated = system.IndexCorrelated this.EntityId : 'c ComponentRef
  +        &correlated.ComponentArefBuffered.Array.[correlated.ComponentIndex]
       type Ecs<'w when 'w :> Freezable> with
           member this.GetEntityRef entityId =
               { EntityId = entityId; EntityEcs = this }
  
positive.code:             let simplex = system.IndexMultiplexed multiId entityId
              &simplex.Simplex
  
          member this.ReadMultiplexed<'c when 'c : struct and 'c :> 'c Component> multiId entityId =
              let systemName = typeof<'c>.Name
              let systemOpt = this.TryIndexSystem<SystemMultiplexed<'c, 'w>> systemName
              if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
              let system = Option.get systemOpt
              let simplex = system.ReadMultiplexed multiId entityId
              &simplex.Simplex
  
          member this.RegisterMultiplexed<'c when 'c : struct and 'c :> 'c Component> comp multiId entityId =
  
negative.code: and [<NoEquality; NoComparison; Struct>] ComponentRef<'c when 'c : struct and 'c :> 'c Component> =
      { ComponentIndex : int
        ComponentAref : 'c ArrayRef
        ComponentArefBuffered : 'c ArrayRef }
  
      member inline this.Index
          with get () = &this.ComponentAref.[this.ComponentIndex]
  
      member inline this.IndexBuffered
          with get () =
              let this = this
              lock this.ComponentArefBuffered (fun () -> this.ComponentArefBuffered.[this.ComponentIndex])
  
      member inline this.Assign value =
          this.ComponentAref.[this.ComponentIndex] <- value
  
      static member inline (<!) (componentRef, value) =
          componentRef.ComponentAref.Array.[componentRef.ComponentIndex] <- value
  
      static member inline make index aref arefBuffered : 'c ComponentRef =
          { ComponentIndex = index
            ComponentAref = aref
            ComponentArefBuffered = arefBuffered }
  
  /// An ECS event.
  and [<NoEquality; NoComparison>] SystemEvent<'d, 'w when 'w :> Freezable> =
  