public void Dispose()
 {
     Bucket?.Clear();
     Bucket = null;
     if (FullBucketReached != null)
     {
         foreach (var d in FullBucketReached?.GetInvocationList())
         {
             FullBucketReached -= (FullQueryBucketEventHandler)d;
         }
     }
     if (BeforeAddToBucket != null)
     {
         foreach (var d in BeforeAddToBucket?.GetInvocationList())
         {
             BeforeAddToBucket -= (OnBeforeAddToBucketEventHandler)d;
         }
     }
 }
 protected virtual void OnBeforeAdd(QueryBucketEventArgs e)
 {
     BeforeAddToBucket?.Invoke(this, e);
 }