class Lister<T> {
  private final String namespace;

  private final String indexName;

  private final Indexer<T> indexer;

  public Lister(Indexer<T> indexer) {
    this(indexer, null, Cache.NAMESPACE_INDEX);
  }

  public Lister(Indexer<T> indexer, String namespace) {
    this(indexer, namespace, Cache.NAMESPACE_INDEX);
  }

  public Lister(Indexer<T> indexer, String namespace, String indexName) {
    this.indexer = indexer;
    this.namespace = namespace;
    this.indexName = indexName;
  }

  public List<T> list() {
    if ((namespace == null || namespace.isEmpty())) {
      return indexer.list();
    } else {
      return indexer.byIndex(this.indexName, namespace);
    }
  }

  public T get(String name) {<FILL_FUNCTION_BODY>}

  public Lister<T> namespace(String namespace) {
    return new Lister<>(this.indexer, namespace, Cache.NAMESPACE_INDEX);
  }
}

    String key = name;
    if (namespace != null && !namespace.isEmpty()) {
      key = namespace + "/" + name;
    }
    return indexer.getByKey(key);
  
<no_super_class>