public static TResult Match <TResult, TLeafNode>(
     this ICombinationFilterNode <TLeafNode> source,
     Func <IEnumerable <IFilterNode <TLeafNode> >, TResult> allReducer,
     Func <IEnumerable <IFilterNode <TLeafNode> >, TResult> anyReducer)
     where TLeafNode : class, ILeafFilterNode
 {
     return(source.Filters
            .Match(allReducer, anyReducer, source.Operator));
 }
 public static TResult Match <TFilter, TResult>(
     this ICombinationFilterNode <TFilter> source,
     Func <IEnumerable <IFilterNode <TFilter> >, TResult> allReducer,
     Func <IEnumerable <IFilterNode <TFilter> >, TResult> anyReducer)
 => source.Nodes
 .Match(allReducer, anyReducer, source.Operator);