class Client {

  public Index[] getIndicesForTable(String tableName) {
    String[] indexNames = this.configuration.getStrings(INDEXES_CONF_KEY);
    List<Index> indices = new ArrayList<Index>();
    for (int i = 0; i < indexNames.length; i++) {
      String name = indexNames[i];
      Class<?> indexClass = configuration.getClass(indexClassConfKey(name),
          null);
      Configuration indexConf = ConfUtils.unpackConfigurationInPrefix(
          indexConfPrefix(name), configuration);
      String primaryTableName = indexConf.get(Index.PRIMARY_TABLE_CONF_KEY);
      if (tableName.equals(primaryTableName)) {
        Index index;
        try {
          index = Index.class.cast(indexClass.newInstance());
        } catch (InstantiationException e) {
          throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
          throw new RuntimeException(e);
        }
        index.setConf(indexConf);
        indices.add(index);
      }
    }
    return indices.toArray(new Index[indices.size()]);
  }

  public  Client(Configuration conf);

}