anchor.diff:      member this.GetEntities () =
           correlations.Keys :> _ IEnumerable
   
  -    abstract member RegisterEntity : Guid -> 't -> 'w Ecs -> int
  -    default this.RegisterEntity entityId comp _ =
  +    abstract member RegisterEntity : Guid -> 't option -> 'w Ecs -> int
  +    default this.RegisterEntity entityId compOpt _ =
           match Dictionary.tryGetValue entityId correlations with
           | (false, _) ->
  +            let comp = Option.getOrDefault Unchecked.defaultof<'t> compOpt
               if freeList.Count = 0 then
                   if freeIndex < components.Length - 1 then
                       components.[freeIndex] <- comp
  
positive.code:         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])
  
negative.code: 
      abstract Disjunction : Dictionary<string, 'w System> -> Guid -> 'w Ecs -> unit
  
      override this.RegisterEntity entityId compOpt ecs =
          if Option.isSome compOpt then
              Log.debug "Component value provided to SystemJunctioned.RegisterEntity is (and will always be) ignored."
          match Dictionary.tryGetValue entityId this.Correlations with
          | (false, _) ->
              let junctions = this.GetJunctions ecs
  