public Map findAll(Func f)
{
Map acc = new Map(m_type);
if (this.ordered()) acc.ordered(true);
if (this.caseInsensitive()) acc.caseInsensitive(true);
IDictionaryEnumerator en = m_map.GetEnumerator();
while (en.MoveNext())
{
object key = en.Key;
object val = en.Value;
if (f.call(val, key) == Boolean.True)
acc.set(key, val);
}
return acc;
}