SelectionModelBuilder(Expression X, params SelectionFacet[] facets)
        {
            this.facets = facets.ToList();
            var visitor = new LinqExpressionVisitor();

            visitor.MethodCallExpressionTraversed += Traversed;
            visitor.BinaryExpressionTraversed     += Traversed;
            visitor.ConstantExpressionTraversed   += Traversed;
            visitor.Visit(X);
        }
        static void Parse <T>(Expression <Predicate <T> > p)
        {
            var visitor = new LinqExpressionVisitor();

            visitor.Visit(p);
        }