private static List<MixedFormatSplit> planChangeTable(
      Collection<TransactionTask> transactionTasks, AtomicInteger splitCount) {
    List<MixedFormatSplit> changeTasks = new ArrayList<>(transactionTasks.size());
    transactionTasks.forEach(
        transactionTask -> {
          PartitionAndNodeGroup partitionAndNodeGroup =
              new PartitionAndNodeGroup()
                  .insertFileScanTask(transactionTask.insertTasks)
                  .deleteFileScanTask(transactionTask.deleteTasks)
                  .splitCount(splitCount);
          changeTasks.addAll(partitionAndNodeGroup.planSplits());
        });
    return changeTasks;
  }
Plans full table scanning for a {@link KeyedTable} with optional filters and a specified split
count.

@param keyedTable The {@link KeyedTable} to scan.
@param filters Optional list of filters to apply to the scan.
@param splitCount The atomic integer to track the split count.
@return The list of planned {@link MixedFormatSplit} included {@link MergeOnReadSplit}.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/FlinkSplitPlanner.java