presto-main/src/main/java/io/prestosql/sql/planner/iterative/rule/ReorderJoins.java/JoinNodeFlattener/JoinNodeFlattener
class JoinNodeFlattener:            JoinNodeFlattener(Metadata metadata, JoinNode node, Lookup lookup, PlanNodeIdAllocator planNodeIdAllocator, int sourceLimit, boolean pushProjectionsThroughJoin)
            {
                this.metadata = requireNonNull(metadata, "metadata is null");
                requireNonNull(node, "node is null");
                checkState(node.getType() == INNER, "join type must be INNER");
                this.outputSymbols = node.getOutputSymbols();
                this.lookup = requireNonNull(lookup, "lookup is null");
                this.planNodeIdAllocator = requireNonNull(planNodeIdAllocator, "planNodeIdAllocator is null");
                this.pushProjectionsThroughJoin = pushProjectionsThroughJoin;
                flattenNode(node, sourceLimit);
            }