public ICollection<Creature> GetCreatures(Func<Creature, bool> predicate) { _creaturesRWLS.EnterReadLock(); try { return _creatures.Values.Where(predicate).ToList(); } finally { _creaturesRWLS.ExitReadLock(); } }