void FontFactory::Shrink() { RETURN_IF_EMPTY(mItems); List<FontId, EqualCompare<FontId> > unusedKeys; FOR_EACH_COLLECTION(i, mItems) { const FontId& fileId = i->Key; IFont* item = i->Value; if (!item->IsShared()) { unusedKeys.Add(fileId); } } RETURN_IF_EMPTY(unusedKeys); FOR_EACH_COLLECTION(i, unusedKeys) { Remove(*i); }