docs: private String escapedAV() {
      beg = pos;
      end = pos;
      while (true) {
        if (pos >= length) {
          // the end of DN has been found
          return new String(chars, beg, end - beg);
        }
  
        switch (chars[pos]) {
          case '+':
          case ',':
          case ';':
            // separator char has been found
            return new String(chars, beg, end - beg);
          case '\\':
            // escaped char
            chars[end++] = getEscaped();
            pos++;
            break;
          case ' ':
            // need to figure out whether space defines
            // the end of attribute value or not
            cur = end;
  
            pos++;
            chars[end++] = ' ';
  
            for (; pos < length && chars[pos] == ' '; pos++) {
              chars[end++] = ' ';
            }
            if (pos == length || chars[pos] == ',' || chars[pos] == '+'
                || chars[pos] == ';') {
              // separator char or the end of DN has been found
              return new String(chars, beg, cur - beg);
            }
            break;
          default:
            chars[end++] = chars[pos];
            pos++;
        }
      }
    }