presto-main/src/main/java/io/prestosql/sql/planner/optimizations/StreamPropertyDerivations.java/Visitor/visitUnnest
class Visitor:        @Override
        public StreamProperties visitUnnest(UnnestNode node, List<StreamProperties> inputProperties)
        {
            StreamProperties properties = Iterables.getOnlyElement(inputProperties);

            // We can describe properties in terms of inputs that are projected unmodified (i.e., not the unnested symbols)
            Set<Symbol> passThroughInputs = ImmutableSet.copyOf(node.getReplicateSymbols());
            StreamProperties translatedProperties = properties.translate(column -> {
                if (passThroughInputs.contains(column)) {
                    return Optional.of(column);
                }
                return Optional.empty();
            });

            switch (node.getJoinType()) {
                case INNER:
                case LEFT:
                    return translatedProperties;
                case RIGHT:
                case FULL:
                    return translatedProperties.unordered(true);
                default:
                    throw new UnsupportedOperationException("Unknown UNNEST join type: " + node.getJoinType());
            }
        }