class ConfigurationImpl implements Configuration {

    @Override
    public Collection<MemberName> getMembersFromShardName(final String shardName) {
        checkNotNullShardName(shardName);

        for (ModuleConfig moduleConfig: moduleConfigMap.values()) {
            ShardConfig shardConfig = moduleConfig.getShardConfig(shardName);
            if (shardConfig != null) {
                return shardConfig.getReplicas();
            }
        }

        for (final PrefixShardConfiguration prefixConfig : prefixConfigMap.values()) {
            if (shardName.equals(ClusterUtils.getCleanShardName(prefixConfig.getPrefix().getRootIdentifier()))) {
                return prefixConfig.getShardMemberNames();
            }
        }

        return Collections.emptyList();
    }

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

}