docs: public static Pair<List<Table>, Set<String>>
      getSnapshotableTables(Database catalog, boolean isReplicated) {
          List<Table> tables = new ArrayList<>();
          Set<String> optionalTableNames = new HashSet<>();
          for (Table table : catalog.getTables()) {
              if (table.getIsreplicated() != isReplicated) {
                  // We handle replicated tables and partitioned tables separately.
                  continue;
              }
              if (isTableExportOnly(catalog, table)) {
                  // Streamed tables are not considered as "normal" tables here.
                  continue;
              }
              if (table.getMaterializer() != null) {
                  if (isSnapshotablePersistentTableView(catalog, table)) {
                      // Some persistent table views are added to the snapshot starting from
                      // V8.2, they are since then considered as "normal" tables, too.
                      // But their presence in the snapshot is not compulsory for backward
                      // compatibility reasons.
                      optionalTableNames.add(table.getTypeName());
                  }
                  else if (! isSnapshotableStreamedTableView(catalog, table)) {
                      continue;
                  }
              }
              tables.add(table);
          }
          return new Pair<List<Table>, Set<String>>(tables, optionalTableNames);
      }