public ITokenConsumeScope BeginScope()
        {
            if (_currentScope != null)
            {
                throw new NestedTransactionScopeExistsException();
            }

            var scope = new TokenConsumeScope(this);
            _currentScope = scope;
            return scope;
        }
        public ITokenConsumeScope Begin()
        {
            if (_nestedTransaction != null)
            {
                if (_nestedTransaction._consumedCache.Count != 0)
                {
                    throw new NestedTransactionScopeExistsException();
                }
                else
                {
                    return _nestedTransaction;
                }
            }

            return _nestedTransaction = new TokenConsumeScope(this);
        }