anchor.diff:  /// batches to ensure maximum throughput when processing the manually-junctioned components.
   /// Also note that all junctions are guaranteed to keep the same size and order as the related components so that they
   /// can be accessed by the same index.
  -type SystemCorrelated<'c, 'w when 'c : struct and 'c :> 'c Component> (name, buffered, ecs : 'w Ecs) =
  -    inherit System<'w> (name)
  +type SystemCorrelated<'c, 'w when 'c : struct and 'c :> 'c Component> (buffered, ecs : 'w Ecs) =
  +    inherit System<'w> (typeof<'c>.Name)
   
       let mutable (components, componentsBuffered) = ecs.AllocateComponents<'c> buffered
       let mutable (junctions, junctionsBuffered) = ecs.AllocateJunctions<'c> ()
  
positive.code:         this.RegisterSystemGeneralized system :?> 's
  
  /// An Ecs system with just a single component.
  type SystemSingleton<'c, 'w when 'c : struct and 'c :> 'c Component> (name, comp : 'c) =
      inherit System<'w> (name)
      let mutable comp = comp
      new (comp) = SystemSingleton (typeof<'c>.Name, comp)
      member this.Component with get () = &comp
      type Ecs<'w> with
          member this.IndexSingleton<'c, 'w when 'c : struct and 'c :> 'c Component> () =
  
negative.code:             &system.Component
  
  /// An Ecs system with components stored by an integer index.
  type SystemUncorrelated<'c, 'w when 'c : struct and 'c :> 'c Component> (buffered, ecs : 'w Ecs) =
      inherit System<'w> (typeof<'c>.Name)
  
      let mutable (components, componentsBuffered) = ecs.AllocateComponents<'c> buffered
      let mutable freeIndex = 0
      let freeList = HashSet<int> HashIdentity.Structural
  
      new (ecs) = SystemUncorrelated (false, ecs)
  
      member this.Components with get () = components
      member this.WithComponentsBuffered (fn : 'c ArrayRef -> 'w option -> 'w option) worldOpt = lock componentsBuffered (fun () -> fn componentsBuffered worldOpt)
  