internal void SetupData()
        {
            configuration  = QueryPipelineConfiguration.instance;
            Data           = new ParallelQueryData(MARSMemoryOptions.instance.QueryDataCapacity);
            Data.OnResize += WireStages;

            CacheTraitReferencesStage = SetupTraitCacheStage();
            ConditionRatingStage      = SetupMatchRating();
            FindMatchProposalsStage   = SetupMatchIntersection();
            DataAvailabilityStage     = SetupAvailabilityCheckStage();
            TraitFilterStage          = SetupTraitFilterStage();
            MatchReductionStage       = SetupMatchReduction();
            BestStandaloneMatchStage  = SetupBestStandaloneMatchStage();
            ResultFillStage           = SetupQueryResultFill();
            MarkUsedStage             = SetupMarkUsedStage();
            AcquireHandlingStage      = SetupAcquireHandlingStage();
        }
        internal AcquireHandlingStage SetupAcquireHandlingStage()
        {
            var handlerTransform = new AcquireHandlingTransform
            {
                Pipeline       = this,
                QueryBackend   = ModuleLoaderCore.instance.GetModule <MARSQueryBackend>(),
                WorkingIndices = Data.DefiniteMatchAcquireIndices
            };

            var indicesTransform = new ManageIndicesTransform()
            {
                WorkingIndices = Data.DefiniteMatchAcquireIndices,
                Input1         = Data.UpdatingIndices,
                Output         = Data.AcquiringIndices
            };

            var stage = new AcquireHandlingStage(handlerTransform, indicesTransform);

            WireAcquireHandlingStage(stage);
            return(stage);
        }
 void WireAcquireHandlingStage(AcquireHandlingStage stage)
 {
     stage.Transformation1.Input1 = Data.QueryResults;
     stage.Transformation1.Output = Data.AcquireHandlers;
 }