docs: public Map<String, List<String>> revsDiff(final Map<String, List<String>> revisions) throws DocumentStoreException {
          Misc.checkState(this.isOpen(), "Database is closed");
          Misc.checkNotNull(revisions, "Input revisions");
          Misc.checkArgument(!revisions.isEmpty(), "revisions cannot be empty");
  
          try {
  
              ValueListMap<String, String> missingRevs = new ValueListMap<String, String>();
  
              // Break down by docId first to avoid potential rev ID clashes between doc IDs
              for (Map.Entry<String, List<String>> entry : revisions.entrySet()) {
                  String docId = entry.getKey();
                  List<String> revs = entry.getValue();
                  // Partition into batches to avoid exceeding placeholder limit
                  // The doc ID will use one placeholder, so use limit - 1 for the number of
                  // revs for the remaining placeholders.
                  List<List<String>> batches = CollectionUtils.partition(revs,
                          SQLITE_QUERY_PLACEHOLDERS_LIMIT - 1);
  
                  for (List<String> revsBatch : batches) {
                      missingRevs.addValuesToKey(docId, get(queue.submit(new RevsDiffBatchCallable(docId, revsBatch))));
                  }
              }
              return missingRevs;
          } catch (ExecutionException e) {
              String message = "Failed to calculate difference in revisions";
              logger.log(Level.SEVERE, message, e);
              throw new DocumentStoreException(message, e);
          }
      }