class StackedModuleConfigRepository implements ModuleConfigRepository {

    @Override
    public Optional<ModuleConfig> getModuleConfig(String name) {
        ModuleConfig stackedConfig = null;
        for (ModuleConfigRepository repository : repositories) {
            Optional<ModuleConfig> config = repository.getModuleConfig(name);
            if (config.isPresent()) {
                if (stackedConfig == null) {
                    stackedConfig = config.get();
                } else {
                    stackedConfig = new StackedModuleConfig(stackedConfig, config.get());
                }
            }
        }
        return Optional.ofNullable(stackedConfig);
    }

    public  StackedModuleConfigRepository(ModuleConfigRepository... repositories);
    public  StackedModuleConfigRepository(List<ModuleConfigRepository> repositories);

}