There is an unsaved comment in progress. You will lose your changes if you continue. Are you sure you want to reopen the work item?
Two things worth trying and profiling:
(a) Look up types by RuntimeTypeHandle rather than Type, since getting the former is faster. Just need to sort out how LazyDictionaryOfTypes will work, since need to change it to be indexed by RuntimeTypeHandles - - see Type.GetTypeFromHandle because it will
still need to get the type, to get the assembly, when initializing it's list of "keys"
(b) Make it so that it doesn't have to do multi-step Dictionary lookups. Want this: once we have the data for the type concerned, just use the offset value to index directly into an array of PropertyInfos. (Array will have "gaps" if we just offset
values directly, since most are 4 bytes apart from each other, except bools etc).