public static async Task AsyncReaderWriterLock()
        {
            var obj     = new object();
            var holder1 = await obj.AcquireReadLockAsync(TimeSpan.Zero);

            if (holder1)
            {
            }
            else
            {
                throw new Exception();
            }

            var holder2 = await obj.AcquireReadLockAsync(TimeSpan.Zero);

            if (holder2)
            {
            }
            else
            {
                throw new Exception();
            }

            await ThrowsAsync <TimeoutException>(() => obj.AcquireWriteLockAsync(TimeSpan.Zero));

            holder1.Dispose();
            holder2.Dispose();

            holder1 = await obj.AcquireWriteLockAsync(TimeSpan.Zero);

            if (holder1)
            {
            }
            else
            {
                throw new Exception();
            }
            holder1.Dispose();
        }