presto-main/src/main/java/io/prestosql/sql/planner/EffectivePredicateExtractor.java/EffectivePredicateExtractor/pullExpressionThroughSymbols
class EffectivePredicateExtractor:        private Expression pullExpressionThroughSymbols(Expression expression, Collection<Symbol> symbols)
        {
            EqualityInference equalityInference = EqualityInference.newInstance(metadata, expression);

            ImmutableList.Builder<Expression> effectiveConjuncts = ImmutableList.builder();
            Set<Symbol> scope = ImmutableSet.copyOf(symbols);
            for (Expression conjunct : EqualityInference.nonInferrableConjuncts(metadata, expression)) {
                if (DeterminismEvaluator.isDeterministic(conjunct, metadata)) {
                    Expression rewritten = equalityInference.rewrite(conjunct, scope);
                    if (rewritten != null) {
                        effectiveConjuncts.add(rewritten);
                    }
                }
            }

            effectiveConjuncts.addAll(equalityInference.generateEqualitiesPartitionedBy(scope).getScopeEqualities());

            return combineConjuncts(metadata, effectiveConjuncts.build());
        }