public Item GetItem(Func<Item, bool> predicate) { Item result; _itemsRWLS.EnterReadLock(); try { result = _items.Values.FirstOrDefault(predicate); } finally { _itemsRWLS.ExitReadLock(); } return result; }