private void plan(boolean insert, Map<String, Map<Long, Node>> nodes) {
    Collection<MixedFileScanTask> tasks = insert ? insertTasks : deleteTasks;
    if (tasks == null) {
      return;
    }

    tasks.forEach(
        task -> {
          String partitionKey = task.file().partition().toString();
          Long nodeId = task.file().node().getId();
          Map<Long, Node> indexNodes = nodes.getOrDefault(partitionKey, new HashMap<>());
          Node node = indexNodes.getOrDefault(nodeId, new Node());
          if (insert) {
            node.addInsert(task);
          } else {
            node.addDelete(task);
          }
          indexNodes.put(nodeId, node);
          nodes.put(partitionKey, indexNodes);
        });
  }
Split the collection of {@link MixedFileScanTask} into different groups.

@param insert if plan insert files or not
@param nodes the key of nodes is partition info which the file located, the value of nodes is
    hashmap of mixed-format tree node id and {@link Node}
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/PartitionAndNodeGroup.java