Create new ThemeResourceProvider SPI

I want to implement resource SPI that change behavior of retreiving messages properties .
I want to not get messages from parent theme (base) . only take message from the currents message .
I am strugling with implementing this SPI , because i do not know How to get the classLoader to get message bundle .
I try this but it does not work . could you please have a example that implement ThemeResourceProviderFactory.

My example here :

public class CustomThemeResourceprovider implements  ThemeResourceProvider{
	
	protected static final Logger logger = Logger.getLogger(CustomClasspathThemeResourceProviderFactory.class);

	
    public static final String THEME_RESOURCES_TEMPLATES = "theme-resources/templates/";
    public static final String THEME_RESOURCES_RESOURCES = "theme-resources/resources/";
    public static final String THEME_RESOURCES_MESSAGES = "theme-resources/messages/";
    
    private final ClassLoader classLoader;
    

	public CustomThemeResourceprovider(ClassLoader classLoader) {
		this.classLoader = classLoader;
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		
	}

    @Override
    public URL getTemplate(String name) throws IOException {
        return classLoader.getResource(THEME_RESOURCES_TEMPLATES + name);
    }

    @Override
    public InputStream getResourceAsStream(String path) throws IOException {
    	
    	logger.info("******* path " + path);
        return classLoader.getResourceAsStream(THEME_RESOURCES_RESOURCES + path);
    }

    
    @Override
    public Properties getMessages(String baseBundlename, Locale locale) throws IOException {
        Properties m = new Properties();
        Locale myLocale = locale ; 
        logger.info("************ input locale " + myLocale);

        InputStream in = classLoader.getResourceAsStream(THEME_RESOURCES_MESSAGES + baseBundlename + "_" + myLocale.toString() + ".properties");
       // logger.info("************ Inial InputStream " + in);
        if(in == null) {
        	
        	 myLocale = Locale.ENGLISH ;
        	 in = classLoader.getResourceAsStream(THEME_RESOURCES_MESSAGES + baseBundlename + "_" + myLocale.toString() + ".properties");
        	 //logger.info("************ English  InputStream " + in);
        }
        
        
        
        if(in != null){
        	logger.info("************ in " + in);
            Charset encoding = PropertiesUtil.detectEncoding(in);
            // detectEncoding closes the stream
            try (Reader reader = new InputStreamReader(
                        classLoader.getResourceAsStream(THEME_RESOURCES_MESSAGES + baseBundlename + "_" + myLocale.toString() + ".properties"), encoding)) {
                m.load(reader);
            }
        }
        return m;
    }
}