docs: private static String escapeFilterChar(char ch) {
          switch (ch) {
              case '*':
                  return "\\2a";
              case '(':
                  return "\\28";
              case ')':
                  return "\\29";
              case '\\':
                  return "\\5c";
              default:
                  // must be a character > 128, so process it as UTF-8 bytes
                  try {
                      byte[] bytes = Character.toString(ch).getBytes("UTF-8");
                      switch (bytes.length) {
                          case 1:
                              return String.format("\\%02x", bytes[0]);
                          case 2:
                              return String.format("\\%02x\\%02x", bytes[0], bytes[1]);
                          case 3:
                              return String.format("\\%02x\\%02x\\%02x", bytes[0], bytes[1], bytes[2]);
                          default:
                              throw new CharConversionException("No character should map to more than three UTF-8 bytes");
                      }
                  } catch (UnsupportedEncodingException e) {
                      //auto-FFDC: Every Java platform should support the UTF-8 encoding
                      return "";
                  } catch (CharConversionException e) {
                      // auto-FFDC
                      return "";
                  }
          }
      }