presto-main/src/main/java/io/prestosql/sql/planner/iterative/rule/TransformCorrelatedInPredicateToJoin.java/TransformCorrelatedInPredicateToJoin/visitFilter
class TransformCorrelatedInPredicateToJoin:        @Override
        public Optional<Decorrelated> visitFilter(FilterNode node, PlanNode reference)
        {
            Optional<Decorrelated> result = decorrelate(node.getSource());
            return result.map(decorrelated ->
                    new Decorrelated(
                            ImmutableList.<Expression>builder()
                                    .addAll(decorrelated.getCorrelatedPredicates())
                                    // No need to retain uncorrelated conditions, predicate push down will push them back
                                    .add(node.getPredicate())
                                    .build(),
                            decorrelated.getDecorrelatedNode()));
        }