anchor.diff:  begin
     if (FActiveWorkerThreads = 0) OR (FActiveWorkerThreads < FMaxWorkerThreads) then begin
       // Start a new worker thread to process
  -    Inc(FActiveWorkerThreads);
       TPipelineWorkerThread.Create(Self, AStage);
       {$IFDEF UNITTESTS}
       if (FActiveWorkerThreads > FHistoricalMaxActiveWorkerThreads) then
  
positive.code:     function GetStageCount : Integer; inline;
    protected
      function ProcessStage(AStageNum : Integer; const AItems : TArray<T>; out TErrors : TArray<TErrorResult>) : TArray<T>; virtual; abstract;
      procedure HandleErrorItems(const AErrorItems : array of T); virtual; abstract;
      procedure HandleFinishedItems(const AErrorItems : array of T); virtual; abstract;
  
    public
      property StageCount : Integer read GetStageCount;
  
negative.code: interface
  
  uses
    Generics.Collections, Classes, SyncObjs, SysUtils, UThread;
  
  Type
    { TPipelineQueue }
  
    TPipelineQueue<T> = class(TComponent)
    private type
      __TArray_T = TArray<T>;
  
      { TStageQueue }
  
  