public RowExpression extract(PlanNode node)
    {
        return node.accept(new Visitor(domainTranslator, functionAndTypeManager), null);
    }
@Test
    public void testUnion()
    {
        PlanNode node = new UnionNode(
                Optional.empty(),
                newId(),
                ImmutableList.of(
                        filter(baseTableScan, greaterThan(AV, bigintLiteral(10))),
                        filter(baseTableScan, and(greaterThan(AV, bigintLiteral(10)), lessThan(AV, bigintLiteral(100)))),
                        filter(baseTableScan, and(greaterThan(AV, bigintLiteral(10)), lessThan(AV, bigintLiteral(100))))),
                ImmutableList.of(AV),
                ImmutableMap.of(AV, ImmutableList.of(BV, CV, EV)));

        RowExpression effectivePredicate = effectivePredicateExtractor.extract(node);

        // Only the common conjuncts can be inferred through a Union
        assertEquals(normalizeConjuncts(effectivePredicate),
                normalizeConjuncts(greaterThan(AV, bigintLiteral(10))));
    }