public <T, Z> void register(Class<T> dataClass, Class<Z> resourceClass, DataLoadProvider<T, Z> provider) {
        //TODO: maybe something like DataLoadProvider<? super T, ? extends Z> may work here
        providers.put(new MultiClassKey(dataClass, resourceClass), provider);
    }
Registers the given {@link DataLoadProvider} using the given classes so it can later
be retrieved using the given classes.

@param dataClass The class of the data that the provider provides encoders and decoders for.
@param resourceClass The class of the resource that the provider provides encoders and decoders for.
@param provider The provider.
@param <T> The type of the data that the provider provides encoders and decoders for.
@param <Z> The type of the resource that the provider provides encoders and decoders for.
core/src/main/java/com/bumptech/glide/provider/DataLoadProviderRegistry.java