anchor.diff:          let _ = componentMultiplexed.UnregisterComponent multiId
           this.UnregisterEntity entityId ecs
   
  -/// Nu's custom Entity-Component-System implementation.
  -/// While this isn't the most efficient ECS, it isn't the least efficient either. Due to the set-associative nature of
  -/// modern caches, most cache hits will be of the L2 variety for junctioned components. Uncorrelated components will be
  -/// L2-bound as is typical. Degradation of cache-prediction would only occur when a significant number of junctioned
  -/// components are very chaotically unregistered in a use-case scenario that the I, the library author, have trouble
  -/// even imagining.
  -and [<NoEquality; NoComparison>] 'w Ecs () =
  -
  -    (* Locals *)
  -
  -    let systemsUnordered = dictPlus [] : Dictionary<string, 'w System>
  -    let systemsOrdered = List () : (string * 'w System) List
  -    let correlations = dictPlus [] : Dictionary<Guid, string List>
  -
  -    (* Processing *)
  -
  -    member this.Update world =
  -        Seq.fold
  -            (fun world (_, system : 'w System) -> system.Update this world)
  -            world systemsOrdered
  -
  -    member this.PostUpdate world =
  -        Seq.fold
  -            (fun world (_, system : 'w System) -> system.PostUpdate this world)
  -            world systemsOrdered
  -
  -    member this.Actualize world =
  -        Seq.fold
  -            (fun world (_, system : 'w System) -> system.Actualize this world)
  -            world systemsOrdered
  -
  -    (* System *)
  -
  -    member this.AddSystem systemName system =
  -        systemsUnordered.Add (systemName, system)
  -        systemsOrdered.Add (systemName, system)
  -
  -    member this.RemoveSystem systemName =
  -        systemsOrdered.RemoveAll (fun (systemName', _) -> systemName' = systemName) |> ignore
  -        systemsUnordered.Remove systemName |> ignore
  -
  -    member this.TryGetSystem<'s when 's :> 'w System> systemName =
  -        match systemsUnordered.TryGetValue systemName with
  -        | (true, system) ->
  -            match system with
  -            | :? 's as systemAsS -> Some systemAsS
  -            | _ -> None
  -        | (false, _) -> None
  -
  -    member this.GetSystem<'s when 's :> 'w System> systemName =
  -        this.TryGetSystem<'s> systemName |> Option.get
  -
  -    (* Uncorrelated *)
  -
  -    member this.GetComponent<'t when 't : struct and 't :> Component> systemName index =
  -        let systemOpt = this.TryGetSystem<SystemUncorrelated<'t, 'w>> systemName
  -        if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  -        let system = Option.get systemOpt
  -        &system.GetComponent index
  -
  -    member this.AddComponent<'t when 't : struct and 't :> Component> systemName (comp : 't) =
  -        match this.TryGetSystem<SystemUncorrelated<'t, 'w>> systemName with
  -        | Some system -> system.AddComponent comp
  -        | None -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    member this.RemoveComponent<'t when 't : struct and 't :> Component> systemName index =
  -        match this.TryGetSystem<SystemUncorrelated<'t, 'w>> systemName with
  -        | Some system -> system.RemoveComponent index
  -        | None -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    (* Correlated *)
  -
  -    member this.QualifyEntity<'t when 't : struct and 't :> Component> systemName entityId =
  -        let systemOpt = this.TryGetSystem<SystemCorrelated<'t, 'w>> systemName
  -        if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  -        let system = Option.get systemOpt
  -        system.HasComponent entityId
  -
  -    member this.IndexEntity<'t when 't : struct and 't :> Component> systemName entityId =
  -        let systemOpt = this.TryGetSystem<SystemCorrelated<'t, 'w>> systemName
  -        if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  -        let system = Option.get systemOpt
  -        &system.GetComponent entityId
  -
  -    member this.RegisterEntity<'t when 't : struct and 't :> Component> systemName entityId comp =
  -        match this.TryGetSystem<SystemCorrelated<'t, 'w>> systemName with
  -        | Some system ->
  -            let _ = system.RegisterEntity entityId comp
  -            match correlations.TryGetValue entityId with
  -            | (true, correlation) -> correlation.Add systemName
  -            | (false, _) -> correlations.Add (entityId, List [systemName])
  -        | None -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    member this.UnregisterEntity<'t when 't : struct and 't :> Component> systemName entityId =
  -        match this.TryGetSystem<SystemCorrelated<'t, 'w>> systemName with
  -        | Some system ->
  -            if system.UnregisterEntity entityId this then
  -                match correlations.TryGetValue entityId with
  +    type 'w Ecs with
  +
  +        member this.QualifyMultiplexed<'t when 't : struct and 't :> Component> systemName multiId entityId =
  +            let systemOpt = this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName
  +            if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  +            let system = Option.get systemOpt
  +            system.HasMultiplexed multiId entityId
  +
  +        member this.IndexMultiplexed<'t when 't : struct and 't :> Component> systemName multiId entityId =
  +            let systemOpt = this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName
  +            if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  +            let system = Option.get systemOpt
  +            let simplex = system.GetMultiplexed multiId entityId
  +            &simplex.Simplex
  +
  +        member this.RegisterMultiplexed<'t when 't : struct and 't :> Component> systemName entityId comp =
  +            match this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName with
  +            | Some system ->
  +                let _ = system.RegisterMultiplexed entityId comp
  +                match this.Correlations.TryGetValue entityId with
                   | (true, correlation) -> correlation.Add systemName
  -                | (false, _) -> correlations.Add (entityId, List [systemName])
  -        | _ -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    member this.CorrelateEntity entityId =
  -        correlations.[entityId] |>
  -        Seq.map (fun systemName -> (systemName, this.GetSystem<'w System> systemName)) |>
  -        dictPlus
  -
  -    member this.GetEntities<'t when 't : struct and 't :> Component> systemName =
  -        match this.TryGetSystem<SystemCorrelated<'t, 'w>> systemName with
  -        | Some system -> system.GetEntities ()
  -        | _ -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    (* Multiplexed *)
  -
  -    member this.QualifyMultiplexed<'t when 't : struct and 't :> Component> systemName multiId entityId =
  -        let systemOpt = this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName
  -        if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  -        let system = Option.get systemOpt
  -        system.HasMultiplexed multiId entityId
  -
  -    member this.IndexMultiplexed<'t when 't : struct and 't :> Component> systemName multiId entityId =
  -        let systemOpt = this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName
  -        if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
  -        let system = Option.get systemOpt
  -        let oneOf = system.GetMultiplexed multiId entityId
  -        &oneOf.OneOf
  -
  -    member this.RegisterMultiplexed<'t when 't : struct and 't :> Component> systemName entityId comp =
  -        match this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName with
  -        | Some system ->
  -            let _ = system.RegisterMultiplexed entityId comp
  -            match correlations.TryGetValue entityId with
  -            | (true, correlation) -> correlation.Add systemName
  -            | (false, _) -> correlations.Add (entityId, List [systemName])
  -        | None -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    member this.UnregisterMultiplexed<'t when 't : struct and 't :> Component> systemName multiId entityId =
  -        match this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName with
  -        | Some system ->
  -            if system.UnregisterMultiplexed multiId entityId this then
  -                match correlations.TryGetValue entityId with
  -                | (true, correlation) -> correlation.Add systemName
  -                | (false, _) -> correlations.Add (entityId, List [systemName])
  -        | _ -> failwith ("Could not find expected system '" + systemName + "'.")
  -
  -    (* Junctioned *)
  -
  -    member this.JunctionEntityPlus<'t, 'w when 't : struct and 't :> Component>
  -        (systemName : string) (junctions : Dictionary<string, 'w System>) (entityId : Guid) (comp : 't) =
  -        let system = junctions.[systemName] :?> SystemCorrelated<'t, 'w>
  -        let index = system.RegisterEntity entityId comp this
  -        ComponentRef.make index system.Components
  -
  -    member this.JunctionEntity<'t, 'w when 't : struct and 't :> Component>
  -        (junctions : Dictionary<string, 'w System>) (entityId : Guid) =
  -        this.JunctionEntityPlus<'t, 'w> typeof<'t>.Name junctions entityId Unchecked.defaultof<'t>
  -
  -    member this.DisjunctionEntityPlus<'t, 'w when 't : struct and 't :> Component>
  -        (systemName : string) (junctions : Dictionary<string, 'w System>) (entityId : Guid) =
  -        let system = junctions.[systemName] :?> SystemCorrelated<'t, 'w>
  -        system.UnregisterEntity entityId this |> ignore
  -
  -    member this.DisjunctionEntity<'t, 'w when 't : struct and 't :> Component>
  -        (junctions : Dictionary<string, 'w System>) (entityId : Guid) =
  -        this.DisjunctionEntityPlus<'t, 'w> typeof<'t>.Name junctions entityId
  +                | (false, _) -> this.Correlations.Add (entityId, List [systemName])
  +            | None -> failwith ("Could not find expected system '" + systemName + "'.")
  +
  +        member this.UnregisterMultiplexed<'t when 't : struct and 't :> Component> systemName multiId entityId =
  +            match this.TryGetSystem<SystemMultiplexed<'t, 'w>> systemName with
  +            | Some system ->
  +                if system.UnregisterMultiplexed multiId entityId this then
  +                    match this.Correlations.TryGetValue entityId with
  +                    | (true, correlation) -> correlation.Add systemName
  +                    | (false, _) -> this.Correlations.Add (entityId, List [systemName])
  +            | _ -> failwith ("Could not find expected system '" + systemName + "'.")
   
   /// An Ecs system that explicitly associates components by entity id.
   type [<AbstractClass>] SystemJunctioned<'t, 'w when 't : struct and 't :> Component> (junctionedSystemNames : string array) =
  
positive.code: type [<NoEquality; NoComparison; Struct>] ComponentMultiplexed<'t when 't : struct> =
      internal
          { mutable RefCount : int
            Entries : Dictionary<Guid, 't OneOf> }
      interface Component with
          member this.RefCount
              with get () = this.RefCount
              and set value = this.RefCount <- value
      member this.Components
          with get () = this.Entries.Values :> 't OneOf IEnumerable
      member this.RegisterComponent (multiId, comp) =
          this.Entries.Add (multiId, { OneOf = comp })
      member this.UnregisterComponent multiId =
          this.Entries.Remove multiId
  
  /// A storable reference to a component in its containing array.
  type [<NoEquality; NoComparison; Struct>] ComponentRef<'t when 't : struct and 't :> Component> =
      { ComponentIndex : int
        ComponentArr : 't array }
  
      member this.Value
          with get () = &this.ComponentArr.[this.ComponentIndex]
  
      member this.Assign value =
          this.ComponentArr.[this.ComponentIndex] <- value
  
      static member (<!) (componentRef, value) =
          componentRef.ComponentArr.[componentRef.ComponentIndex] <- value
  
      static member (!>) componentRef =
          &componentRef.ComponentArr.[componentRef.ComponentIndex]
  
  [<RequireQualifiedAccess>]
  module ComponentRef =
  
      let make index arr =
          { ComponentIndex = index
            ComponentArr = arr }
  
  /// A base system type of an Ecs.
  type [<AbstractClass>] 'w System () =
  
negative.code:             if components.[index].RefCount = 0 then freeList.Enqueue index
          else freeIndex <- dec freeIndex
  
      type 'w Ecs with
      
          member this.GetComponent<'t when 't : struct and 't :> Component> systemName index =
              let systemOpt = this.TryGetSystem<SystemUncorrelated<'t, 'w>> systemName
              if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
              let system = Option.get systemOpt
              &system.GetComponent index
      
          member this.AddComponent<'t when 't : struct and 't :> Component> systemName (comp : 't) =
              match this.TryGetSystem<SystemUncorrelated<'t, 'w>> systemName with
              | Some system -> system.AddComponent comp
              | None -> failwith ("Could not find expected system '" + systemName + "'.")
      
          member this.RemoveComponent<'t when 't : struct and 't :> Component> systemName index =
              match this.TryGetSystem<SystemUncorrelated<'t, 'w>> systemName with
              | Some system -> system.RemoveComponent index
              | None -> failwith ("Could not find expected system '" + systemName + "'.")
  
  /// An Ecs system with components stored by entity id.
  type [<AbstractClass>] SystemCorrelated<'t, 'w when 't : struct and 't :> Component> () =
      inherit System<'w> ()
  
      let mutable components = Array.zeroCreate 32 : 't array
  