anchor.diff:  // TODO: 3D: remove any incidental allocation.
   // TODO: 3D: make sure to use proper collection comparer for string keys.
   // TODO: 3D: make sure to use TryAdd in the appropriate places.
  -// TODO: 3D: combine eventName and event into a single key?
   // TODO: 3D: abstract ArchetypeId.
   
   /// Allows a value to always pass as equal with another of its same type.
  
positive.code:         subscriptionId
          event
          (callback : EcsCallback<'d, 's>) =
          match subscriptions.TryGetValue event.EventName with
          | (true, subscriptions) ->
              match subscriptions.TryGetValue event.EventType with
              | (true, subscriptions) ->
                  subscriptions.Add (subscriptionId, this.BoxCallback<'d, 's> callback)
                  subscriptionId
              | (false, _) ->
                  let callbacks = dictPlus HashIdentity.Structural [(subscriptionId, this.BoxCallback<'d, 's> callback)]
                  subscriptions.Add (event.EventType, callbacks)
                  subscriptionId
          | (false, _) ->
              let callbacks = dictPlus HashIdentity.Structural [(subscriptionId, this.BoxCallback<'d, 's> callback)]
              subscriptions.Add (event.EventName, dictPlus HashIdentity.Structural [(event.EventType, callbacks)])
              subscriptionId
  
      member this.Subscribe<'d, 's> event callback =
          this.SubscribePlus<'d, 's> this.SubscriptionId event callback |> ignore
  
      member this.Unsubscribe event subscriptionId =
          match subscriptions.TryGetValue event.EventName with
          | (true, subscriptions) ->
              match subscriptions.TryGetValue event.EventType with
              | (true, callbacks) -> callbacks.Remove subscriptionId
              | (false, _) -> false
          | (false, _) -> false
  
      member this.RegisterComponentType<'c when 'c : struct and 'c :> 'c Component> componentName =
  
negative.code:         (eventData : 'd)
          (state : 's) : 's =
          let mutable state = state
          match subscriptions.TryGetValue event with
          | (true, callbacks) ->
              for entry in callbacks do
                  match entry.Value with
                  | :? EcsCallback<obj, 's> as objCallback ->
                      let evt = { EcsEventData = eventData :> obj }
                      state <- objCallback evt this state
                  | _ -> ()
          | (false, _) -> ()
          state
  
      member this.PublishAsync<'d, 's> event (eventData : 'd) =
          let vsync =
              match subscriptions.TryGetValue event with
              | (true, callbacks) ->
                  callbacks |>
                  Seq.map (fun entry ->
                      Task.Run (fun () ->
                          match entry.Value with
                          | :? EcsCallback<obj, 's> as objCallback ->
                              let evt = { EcsEventData = eventData :> obj }
                              objCallback evt this Unchecked.defaultof<'s> |> ignore<'s>
                          | _ -> ()) |> Vsync.AwaitTask) |>
                  Vsync.Parallel
              | (false, _) -> Vsync.Parallel []
          Vsync.StartAsTask vsync
  
  