protected void InnerCollect(IList list, Predicate predicate) { AcquireReaderLock(); try { foreach (object item in _list) { if (predicate(item)) { list.Add(item); } } } finally { ReleaseReaderLock(); } }