Values are the implementation instances. So if I do `extensions.put(AdvancedNetworking.class, myAdvancedNetworking)` then the myAdvancedNetworking is an instance that implements the AdvancedNetworking interface/class. So given all the keys can be for different types, I don't think we can narrow it down.

Puts to the field is guarded in the `addExtension()` method, so everything in the map should obey the key-value relationship constraint.