public static Func <T, bool> ToFunc <T>(this Predicate <T> predicate)
        {
            var target = predicate.Target;

            if (target is FuncWrapper <T> funcWrapper)
            {
                return(funcWrapper.Func);
            }
            var wrapper = new PredicateWrapper <T>(predicate);

            return(wrapper.Invoke);
        }
        public static Func <T, bool> ToFunc <T>(this Predicate <T> predicate)
        {
            var target      = predicate.Target;
            var funcWrapper = target as FuncWrapper <T>;

            if (funcWrapper != null)
            {
                return(funcWrapper.Func);
            }
            else
            {
                var wrapper = new PredicateWrapper <T>(predicate);
                return(wrapper.Invoke);
            }
        }