make ProviderCollection iterator support key mapping