code: public final ValueWithPos<String> formatDin5008InternationalWithPos(
        final ValueWithPos<PhoneNumberData> pphoneNumberData) {
      final StringBuilder resultNumber = new StringBuilder();
      if (pphoneNumberData == null) {
        return null;
      }
      int cursor = pphoneNumberData.getPos();
      if (isPhoneNumberNotEmpty(pphoneNumberData.getValue())) {
        cursor++;
        resultNumber.append('+').append(pphoneNumberData.getValue().getCountryCode());
        if (resultNumber.length() <= cursor) {
          cursor++;
        }
        resultNumber.append(' ');
        if (StringUtils.isNotBlank(pphoneNumberData.getValue().getAreaCode())) {
          resultNumber.append(pphoneNumberData.getValue().getAreaCode());
          if (resultNumber.length() <= cursor) {
            cursor++;
          }
          resultNumber.append(' ');
        }
        resultNumber.append(pphoneNumberData.getValue().getLineNumber());
        if (StringUtils.isNotBlank(pphoneNumberData.getValue().getExtension())) {
          if (resultNumber.length() <= cursor) {
            cursor++;
          }
          resultNumber.append('-');
          resultNumber.append(pphoneNumberData.getValue().getExtension());
        }
      }
      return new ValueWithPos<>(StringUtils.trimToNull(resultNumber.toString()), cursor);
    }
docs: format phone number in DIN 5008 international format with cursor position handling.
  
  @param pphoneNumberData phone number to format with cursor position
  @return formated phone number as String with new cursor position