/// <summary>
 /// If takeComplement is true, we still return the filter for NotValues.
 /// Therefore, the calling function of this class needs to apply NotFilter on top
 /// of this filter if takeComplement is true.
 /// </summary>
 /// <param name="facetDataCacheBuilder"></param>
 /// <param name="facetFilter"></param>
 /// <param name="val"></param>
 /// <param name="takeComplement"></param>
 public AdaptiveFacetFilter(IFacetDataCacheBuilder facetDataCacheBuilder, RandomAccessFilter facetFilter, string[] val, bool takeComplement)
 {
     _facetFilter           = facetFilter;
     _facetDataCacheBuilder = facetDataCacheBuilder;
     _valSet         = val;
     _takeComplement = takeComplement;
 }
 /// <summary>
 /// If takeComplement is true, we still return the filter for NotValues.
 /// Therefore, the calling function of this class needs to apply NotFilter on top
 /// of this filter if takeComplement is true.
 /// </summary>
 /// <param name="facetDataCacheBuilder"></param>
 /// <param name="facetFilter"></param>
 /// <param name="val"></param>
 /// <param name="takeComplement"></param>
 public AdaptiveFacetFilter(IFacetDataCacheBuilder facetDataCacheBuilder, RandomAccessFilter facetFilter, string[] val, bool takeComplement)
 {
     _facetFilter = facetFilter;
     _facetDataCacheBuilder = facetDataCacheBuilder;
     _valSet = val;
     _takeComplement = takeComplement;
 }
 public RandomAccessNotFilter(RandomAccessFilter innerFilter)
 {
     m_innerFilter = innerFilter;
 }
 public RandomAccessNotFilter(RandomAccessFilter innerFilter)
 {
     _innerFilter = innerFilter;
 }