anchor.diff:              else this.FreeIndex <- dec this.FreeIndex
               this.Disjunction junctions entityId comp ecs
               true
  -        | (false, _) -> false+        | (false, _) -> false
  +
  +    type 'w Ecs with
  +
  +        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
positive.code:     abstract Actualize : 'w Ecs -> 'w -> 'w
      default this.Actualize _ world = world
  
  /// An Ecs system with just a single component.
  and [<AbstractClass>] SystemSingleton<'t, 'w when 't : struct and 't :> Component> (comp : 't) =
      inherit System<'w> ()
      let mutable comp = comp
      member this.Component with get () = &comp
  
  /// An Ecs system with components stored by a raw index.
  /// Uncorrelated systems could potentially be processed in parallel.
  and [<AbstractClass>] SystemUncorrelated<'t, 'w when 't : struct and 't :> Component> () =
      inherit System<'w> ()
  
      let mutable components = Array.zeroCreate 32 : 't array
  
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
  