public IEnumerable <T> GetItems(byte[] lower, byte[] upper) { foreach (var pair in m_index.GetRange(lower, upper)) { var items = pair.Value as HashSet <T>; if (items != null) { foreach (T item in items) { yield return(item); } } else { yield return((T)pair.Value); } } }