code: public AssetDir OpenDir(final String dirname) {
      ATRACE_CALL();
  
      String full_path = "assets/" + dirname;
      // std.unique_ptr<SortedVector<AssetDir.FileInfo>> files =
      //     util.make_unique<SortedVector<AssetDir.FileInfo>>();
      SortedVector<FileInfo> files = new SortedVector<>();
  
      // Start from the back.
      for (CppApkAssets apk_assets : apk_assets_) {
        // auto func = [&](final String& name, FileType type) {
        ForEachFileCallback func = (final String name, FileType type) -> {
          AssetDir.FileInfo info = new FileInfo();
          info.setFileName(new String8(name));
          info.setFileType(type);
          info.setSourceName(new String8(apk_assets.GetPath()));
          files.add(info);
        };
  
        if (!apk_assets.ForEachFile(full_path, func)) {
          return new AssetDir();
        }
      }
  
      // std.unique_ptr<AssetDir> asset_dir = util.make_unique<AssetDir>();
      AssetDir asset_dir = new AssetDir();
      asset_dir.setFileList(files);
      return asset_dir;
    }
docs: AssetDir OpenDir(final String dirname);