anchor.diff:                  Array.map (fun sourceName -> (sourceName, ecs.GetSystem<'w System> sourceName)) |>
                   dictPlus
               junctionsOpt <- Some junctions
  -            junctions
  -
  -type [<AbstractClass>] SystemMulti<'t, 'w when 't : struct and 't :> Component> () =
  -    inherit SystemCorrelated<'t ComponentMulti, 'w> ()
  -
  -    member this.RegisterEntity3 compId entityId ecs =
  -        let _ = this.RegisterEntity entityId ecs
  -        let componentMulti = &this.GetComponent entityId
  -        do componentMulti.RegisterComponent compId
  -        &componentMulti
  -
  -    member this.UnregisterEntity3 compId entityId ecs =
  -        let componentMulti = &this.GetComponent entityId
  -        let result = componentMulti.UnregisterComponent compId
  -        let _ = this.UnregisterEntity entityId ecs
  -        result+            junctions
positive.code: open System
  open System.Collections.Generic
  open Prime
  
  type Component =
      abstract RefCount : int with get, set
  
negative.code:         match this.TryGetSystem<SystemCorrelated<'t, 'w>> systemName with
          | Some system ->
              if system.UnregisterEntity 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 + "'.")
  
      member this.IndexMulti<'t when 't : struct and 't :> Component> systemName multiId entityId =
          let systemOpt = this.TryGetSystem<SystemMulti<'t, 'w>> systemName
          if Option.isNone systemOpt then failwith ("Could not find expected system '" + systemName + "'.")
          let system = Option.get systemOpt
          let oneOf = system.GetMulti multiId entityId
          &oneOf.OneOf
  
      member this.RegisterMulti<'t when 't : struct and 't :> Component> systemName entityId =
          match this.TryGetSystem<SystemMulti<'t, 'w>> systemName with
          | Some system ->
              let _ = system.RegisterMulti entityId
              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.UnregisterMulti<'t when 't : struct and 't :> Component> systemName multiId entityId =
          match this.TryGetSystem<SystemMulti<'t, 'w>> systemName with
          | Some system ->
              if system.UnregisterMulti multiId entityId this then
                  match correlations.TryGetValue entityId with
                  | (true, correlation) -> correlation.Add systemName
                  | (false, _) -> correlations.Add (entityId, List [systemName])
  