private static ImageNameSubstitutor getImageNameSubstitutor(ClassLoader classLoader) {
        final String configuredClassName = TestcontainersConfiguration.getInstance().getImageSubstitutorClassName();

        if (configuredClassName != null) {
            try {
                return (ImageNameSubstitutor) classLoader.loadClass(configuredClassName).getConstructor().newInstance();
            } catch (Exception e) {
                throw new IllegalArgumentException(
                    "Configured Image Substitutor could not be loaded: " + configuredClassName,
                    e
                );
            }
        }

        return StreamSupport
            .stream(ServiceLoader.load(ImageNameSubstitutor.class, classLoader).spliterator(), false)
            .findFirst()
            .orElse(null);
    }
An image name substitutor converts a Docker image name, as may be specified in code, to an alternative name.
This is intended to provide a way to override image names, for example to enforce pulling of images from a private
registry.
<p>
This is marked as @{@link UnstableAPI} as this API is new. While we do not think major changes will be required, we
will react to feedback if necessary.
core/src/main/java/org/testcontainers/utility/ImageNameSubstitutor.java