public Func <T, bool> CreateEvaluator <T>()
        {
            PredicateNode predicate = FindChild <PredicateNode>();

            if (predicate != null)
            {
                return(predicate.CreateFunction <T>());
            }

            LiteralNode node = FindChild <LiteralNode>();

            if (node != null)
            {
                return(node.CreateFunction <T>());
            }

            Debug.Assert(false);
            return(null);
        }