@SuppressWarnings("unchecked")
    public <Z, R> ResourceTranscoder<Z, R> get(Class<Z> decodedClass, Class<R> transcodedClass) {
        if (decodedClass.equals(transcodedClass)) {
            // we know they're the same type (Z and R)
            return (ResourceTranscoder<Z, R>) UnitTranscoder.get();
        }
        final ResourceTranscoder<?, ?> result;
        synchronized (GET_KEY) {
            GET_KEY.set(decodedClass, transcodedClass);
            result = factories.get(GET_KEY);
        }
        if (result == null) {
            throw new IllegalArgumentException("No transcoder registered for " + decodedClass + " and "
                    + transcodedClass);
        }
        return (ResourceTranscoder<Z, R>) result;
    }
Returns the currently registered {@link ResourceTranscoder} for the
given classes.

@param decodedClass The class of the resource that the transcoder transcodes from.
@param transcodedClass The class of the resource that the transcoder transcodes to.
@param <Z> The type of the resource that the transcoder transcodes from.
@param <R> The type of the resource that the transcoder transcodes to.
core/src/main/java/com/bumptech/glide/load/resource/transcode/TranscoderRegistry.java