docs: @Override
      public String decode( String encodedText ) {
          if (encodedText == null) return null;
          if (encodedText.length() < 7) {
              // Not big enough to have an encoded sequence
              return encodedText;
          }
          StringBuilder sb = new StringBuilder();
          char[] digits = new char[4];
          CharacterIterator iter = new StringCharacterIterator(encodedText);
          for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
              if (c == '_') {
                  // Read the next character, if there is one ...
                  char next = iter.next();
                  if (next == CharacterIterator.DONE) {
                      sb.append(c);
                      break;
                  }
                  // If the next character is not 'x', then these are just regular characters ...
                  if (next != 'x') {
                      sb.append(c).append(next);
                      continue;
                  }
                  // Read the next 4 characters (digits) and another '_' character ...
                  digits[0] = iter.next();
                  if (digits[0] == CharacterIterator.DONE) {
                      sb.append(c).append(next);
                      break;
                  }
                  digits[1] = iter.next();
                  if (digits[1] == CharacterIterator.DONE) {
                      sb.append(c).append(next).append(digits, 0, 1);
                      break;
                  }
                  digits[2] = iter.next();
                  if (digits[2] == CharacterIterator.DONE) {
                      sb.append(c).append(next).append(digits, 0, 2);
                      break;
                  }
                  digits[3] = iter.next();
                  if (digits[3] == CharacterIterator.DONE) {
                      sb.append(c).append(next).append(digits, 0, 3);
                      break;
                  }
                  char underscore = iter.next();
                  if (underscore != '_') { // includes DONE
                      sb.append(c).append(next).append(digits, 0, 4);
                      if (underscore == CharacterIterator.DONE) break;
                      sb.append(underscore);
                      continue;
                  }
                  // We've read all 4 digits, including the trailing '_'
                  // Now parse into the resulting character
                  try {
                      sb.appendCodePoint(Integer.parseInt(new String(digits), 16));
                  } catch (NumberFormatException e) {
                      // code was not hexadecimal, so just write out the characters as is ...
                      sb.append(c).append(next).append(digits).append(underscore);
                  }
              } else {
                  // Just append other characters ...
                  sb.append(c);
              }
          }
          return sb.toString();
      }