public void MapNestedTypes(Func<ITypeDescriptor, ITypeDescriptor> map)
{
for (int index = 0; index < _fields.Count; index++)
{
var keyValuePair = _fields[index];
var mapped = map(keyValuePair.Value);
if (mapped == keyValuePair.Value) continue;
keyValuePair = new KeyValuePair<string, ITypeDescriptor>(keyValuePair.Key, mapped);
_fields[index] = keyValuePair;
}
}