docs: public List<TabletSplitMetadata> getTabletSplits(
              ConnectorSession session,
              String schema,
              String table,
              Optional<Domain> rowIdDomain,
              List<AccumuloColumnConstraint> constraints,
              AccumuloRowSerializer serializer)
      {
          try {
              String tableName = AccumuloTable.getFullTableName(schema, table);
              LOG.debug("Getting tablet splits for table %s", tableName);
  
              // Get the initial Range based on the row ID domain
              Collection<Range> rowIdRanges = getRangesFromDomain(rowIdDomain, serializer);
              List<TabletSplitMetadata> tabletSplits = new ArrayList<>();
  
              // Use the secondary index, if enabled
              if (AccumuloSessionProperties.isOptimizeIndexEnabled(session)) {
                  // Get the scan authorizations to query the index
                  Authorizations auths = getScanAuthorizations(session, schema, table);
  
                  // Check the secondary index based on the column constraints
                  // If this returns true, return the tablet splits to Presto
                  if (indexLookup.applyIndex(schema, table, session, constraints, rowIdRanges, tabletSplits, serializer, auths)) {
                      return tabletSplits;
                  }
              }
  
              // If we can't (or shouldn't) use the secondary index, we will just use the Range from the row ID domain
  
              // Split the ranges on tablet boundaries, if enabled
              Collection<Range> splitRanges;
              if (AccumuloSessionProperties.isOptimizeSplitRangesEnabled(session)) {
                  splitRanges = splitByTabletBoundaries(tableName, rowIdRanges);
              }
              else {
                  // if not enabled, just use the same collection
                  splitRanges = rowIdRanges;
              }
  
              // Create TabletSplitMetadata objects for each range
              boolean fetchTabletLocations = AccumuloSessionProperties.isOptimizeLocalityEnabled(session);
  
              LOG.debug("Fetching tablet locations: %s", fetchTabletLocations);
  
              for (Range range : splitRanges) {
                  // If locality is enabled, then fetch tablet location
                  if (fetchTabletLocations) {
                      tabletSplits.add(new TabletSplitMetadata(getTabletLocation(tableName, range.getStartKey()), ImmutableList.of(range)));
                  }
                  else {
                      // else, just use the default location
                      tabletSplits.add(new TabletSplitMetadata(Optional.empty(), ImmutableList.of(range)));
                  }
              }
  
              // Log some fun stuff and return the tablet splits
              LOG.debug("Number of splits for table %s is %d with %d ranges", tableName, tabletSplits.size(), splitRanges.size());
              return tabletSplits;
          }
          catch (Exception e) {
              throw new PrestoException(UNEXPECTED_ACCUMULO_ERROR, "Failed to get splits from Accumulo", e);
          }
      }