public override void Reset()
        {
            base.Reset();

            if (_Tokens.RemoveAll(token => token.IsTemporary) > 0)
            {
                if (TokensChanged != null)
                {
                    TokensChangedEventArgs tcea = new TokensChangedEventArgs(null);
                    TokensChanged(this, tcea);
                }
            }

            PileChangedEventArgs pcea = new PileChangedEventArgs(PileChangedEventArgs.Operation.Reset);

            if (_AsynchronousChanging)
            {
                _AsynchronousPileChangedEventArgs = pcea;
            }
            else if (PileChanged != null)
            {
                PileChanged(this, pcea);
            }
        }