public EndPoint(SearchFsa <TItem> fsa, FoundDelegate foundDelegate = null)
 {
     if (fsa == null || !fsa.IsPrepared)
     {
         throw new ArgumentException();
     }
     Fsa        = fsa;
     TotalFound = foundDelegate;
     ResetState();
 }
 public void Dispose()
 {
     if (IsDisposed)
     {
         return;
     }
     if (Fsa != null)
     {
         Fsa.UnregisterEndPoint(this);
     }
     TotalFound = null;
     Fsa        = null;
     IsDisposed = true;
 }