docs: private String explainSearchKeys(String[] asIndexed, int nCovered) {
          // By default, indexing starts at the start of the index.
          if (m_searchkeyExpressions.isEmpty()) {
              return "start";
          }
          String conjunction = "";
          String result = "(";
          int prefixSize = nCovered - 1;
          for (int ii = 0; ii < prefixSize; ++ii) {
              result += conjunction + asIndexed[ii] + (m_compareNotDistinct.get(ii) ? " NOT DISTINCT " : " = ") +
                      m_searchkeyExpressions.get(ii).explain(getTableNameForExplain());
              conjunction = ") AND (";
          }
          // last element
          result += conjunction + asIndexed[prefixSize] + " ";
          if (m_lookupType == IndexLookupType.EQ && m_compareNotDistinct.get(prefixSize)) {
              result += "NOT DISTINCT";
          } else {
              result += m_lookupType.getSymbol();
          }
          result += " " + m_searchkeyExpressions.get(prefixSize).explain(getTableNameForExplain());
          if (m_lookupType != IndexLookupType.EQ && m_compareNotDistinct.get(prefixSize)) {
              result += ", including NULLs";
          }
          result += ")";
          return result;
      }