presto-main/src/main/java/io/prestosql/sql/planner/StageExecutionPlan.java/StageExecutionPlan/StageExecutionPlan
class StageExecutionPlan:    public StageExecutionPlan(
            PlanFragment fragment,
            Map<PlanNodeId, SplitSource> splitSources,
            List<StageExecutionPlan> subStages, Map<PlanNodeId, TableInfo> tables)
    {
        this.fragment = requireNonNull(fragment, "fragment is null");
        this.splitSources = requireNonNull(splitSources, "dataSource is null");
        this.subStages = ImmutableList.copyOf(requireNonNull(subStages, "dependencies is null"));

        fieldNames = (fragment.getRoot() instanceof OutputNode) ?
                Optional.of(ImmutableList.copyOf(((OutputNode) fragment.getRoot()).getColumnNames())) :
                Optional.empty();

        this.tables = ImmutableMap.copyOf(requireNonNull(tables, "tables is null"));
    }