public bool TryGet([NotNullWhen(true)] out BoundedOwner <T>?owner)
        {
            LinkedListNode <T>?node;

            lock (_lock)
            {
                var freeList = _freeList;
                if (freeList.Count == 0)
                {
                    node = null;
                }
                else
                {
                    node = _freeList.First;
                    if (node != null)
                    {
                        _freeList.Remove(node);
                    }
                }
            }

            if (node == null)
            {
                owner = null;
                return(false);
            }
            else
            {
                owner = new BoundedOwner <T>(this, node);
                return(true);
            }
        }
 public void Send(BoundedOwner <T> owner)
 {
     if (!_writer.TryWrite(owner))
     {
         owner.Dispose();
         Console.WriteLine("Failed to write to channel - dropping");
     }
 }