Improved fromJson mechanism by:
- caching the set of properties (keys) used for a certain class, together with their variants
- allowing the devs to configure which variants to use