retain ReadOnlyDictionary reference instead of recreating instance on each property get

ReadOnlyDictionary is only a wrapper around an existing dictionary so you can retain the reference instead of recreating new instances on each property get.

This change avoids a (minor) performance bottleneck if a user queries the properties in a loop and is not aware of the inner implementation.