public object reduce(object reduction, Func f) { IDictionaryEnumerator en = m_map.GetEnumerator(); while (en.MoveNext()) { object key = en.Key; object val = en.Value; reduction = f.call(reduction, val, key); } return reduction; }