`KeyResolver` should resolve key based on a given metadata. `ModelMetadataExtractor` should worry about metadata only. It might be initialized with a specific set of extractors.