class ConfigurationImpl implements Configuration {

    @Override
    public Collection<String> getMemberShardNames(final MemberName memberName) {
        requireNonNull(memberName, "memberName should not be null");

        List<String> shards = new ArrayList<>();
        for (ModuleConfig moduleConfig: moduleConfigMap.values()) {
            for (ShardConfig shardConfig: moduleConfig.getShardConfigs()) {
                if (shardConfig.getReplicas().contains(memberName)) {
                    shards.add(shardConfig.getName());
                }
            }
        }

        return shards;
    }

    public  ConfigurationImpl(final String moduleShardsConfigPath, final String modulesConfigPath);
    public  ConfigurationImpl(final ModuleShardConfigProvider provider);

}