public object eachWhile(Func f) { IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; object r = f.call(val, key); if (r != null) return r; } return null; }