public AsyncReaderWriterLock()
        {
            _readerTail = new ReaderLockSource(this);
            _writerTail = new WriterLockSource(this);

            _readerTail.CompleteTasks();
            _writerTail.TryCompleteTask();
            _writerTail.Task.Result.Dispose();
        }
 public Token(Action dispose, ReaderLockSource reentrancySource)
 {
     _dispose   = dispose;
     Reentrancy = ReaderLockTokenFactory.Create(reentrancySource);
 }