internal Queue <Stage <TRunInfo> > Create <TRunInfo>( DefaultCommand <TRunInfo> defaultCommand, Action <TRunInfo> postBuildCallback) where TRunInfo : class { var pipeline = new Queue <Stage <TRunInfo> >(); pipeline.Enqueue(defaultCommand.ToStage()); Queue <Stage <TRunInfo> > commonStages = BuildCommonPipelineStages(defaultCommand, hasGlobalOptions: false); while (commonStages.Any()) { pipeline.Enqueue(commonStages.Dequeue()); } pipeline.Enqueue(new EndProcessStage <TRunInfo>(postBuildCallback)); return(pipeline); }