docs: public static String constructUniqueName(String[] RDNs, Entity entity, String parentDN, boolean throwExc) throws WIMException {
          boolean found = false;
          String uniqueName = null;
          String missingPropName = null;
          for (int i = 0; i < RDNs.length; i++) {
              String[] localRDNs = getRDNs(RDNs[i]);
              int size = localRDNs.length;
              String[] RDNValues = new String[size];
              boolean findValue = true;
              for (int j = 0; j < size && findValue; j++) {
                  String thisRDN = localRDNs[j];
                  String thisRDNValue = String.valueOf(entity.get(thisRDN));
                  if (thisRDNValue == null || "null".equalsIgnoreCase(thisRDNValue)) {
                      findValue = false;
                      missingPropName = thisRDN;
                  } else if (thisRDNValue.trim().length() == 0) {
                      String qualifiedEntityType = entity.getTypeName();
                      throw new InvalidPropertyValueException(WIMMessageKey.CAN_NOT_CONSTRUCT_UNIQUE_NAME, Tr.formatMessage(tc, WIMMessageKey.CAN_NOT_CONSTRUCT_UNIQUE_NAME,
                                                                                                                            WIMMessageHelper.generateMsgParms(thisRDN,
                                                                                                                                                              qualifiedEntityType)));
                  } else {
                      RDNValues[j] = thisRDNValue;
                  }
              }
              if (findValue) {
                  if (!found) {
                      uniqueName = constructUniqueName(localRDNs, RDNValues, parentDN);
                      found = true;
                  } else if (throwExc) {
                      String qualifiedEntityType = entity.getTypeName();
                      throw new InvalidUniqueNameException(WIMMessageKey.CAN_NOT_CONSTRUCT_UNIQUE_NAME, Tr.formatMessage(tc, WIMMessageKey.CAN_NOT_CONSTRUCT_UNIQUE_NAME,
                                                                                                                         WIMMessageHelper.generateMsgParms(RDNs[i],
                                                                                                                                                           qualifiedEntityType)));
                  }
              }
          }
          if (missingPropName != null && !found && throwExc) {
              throw new MissingMandatoryPropertyException(WIMMessageKey.MISSING_MANDATORY_PROPERTY, Tr.formatMessage(tc, WIMMessageKey.MISSING_MANDATORY_PROPERTY,
                                                                                                                     WIMMessageHelper.generateMsgParms(missingPropName)));
          }
          return uniqueName;
      }