code: public static SourceScheduler newSourcePartitionedSchedulerAsSourceScheduler(
              SqlStageExecution stage,
              PlanNodeId partitionedNode,
              SplitSource splitSource,
              SplitPlacementPolicy splitPlacementPolicy,
              int splitBatchSize,
              boolean groupedExecution)
      {
          return new SourcePartitionedScheduler(stage, partitionedNode, splitSource, splitPlacementPolicy, splitBatchSize, groupedExecution);
      }
docs: Obtains a {@code SourceScheduler} suitable for use in FixedSourcePartitionedScheduler.
  <p>
  This returns a {@code SourceScheduler} that can be used for a pipeline
  that is either ungrouped or grouped. However, the caller is responsible initializing
  the driver groups in this scheduler accordingly.
  <p>
  Besides, the caller is required to poll {@link #drainCompletelyScheduledLifespans()}
  in addition to {@link #schedule()} on the returned object. Otherwise, lifecycle
  transitioning of the object will not work properly.