class ConfigurableClassLoader extends URLClassLoader {

    @Override
    public InputStream getResourceAsStream(final String name) {
        return ofNullable(doGetResourceAsStream(name))
                .orElseGet(() -> ofNullable(resources.get(name))
                        .filter(s -> s.size() > 0)
                        .map(s -> s.iterator().next().resource)
                        .map(ByteArrayInputStream::new)
                        .orElse(null));
    }

    public  ConfigurableClassLoader(final String id, final URL[] urls, final ClassLoader parent,
            final Predicate<String> parentFilter, final Predicate<String> childFirstFilter,
            final String[] nestedDependencies, final String[] jvmPrefixes);
    private  ConfigurableClassLoader(final String id, final URL[] urls, final ClassLoader parent,
            final Predicate<String> parentFilter, final Predicate<String> childFirstFilter,
            final Map<String, Collection<Resource>> resources, final String[] jvmPrefixes);

}