docs: public final void setCorrelationId(String value) {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "setCorrelationId", value);
          /* If the String starts with ID_STRING we have to chack it is valid, and */
          /* convert it to lower-case before storing it. */
          if ((value != null) && (value.startsWith(ID_STRING))) {
              boolean needsConvert = false;
              int length = value.length();
              char ch;
  
              /* Including the ID: it must have an odd number of characters */
              if ((length % 2) == 0) {
                  String nlsMsg = nls.getFormattedMessage("BAD_HEX_STRING_CWSIF0191"
                                                          , new Object[] { value }
                                                          , "The hexadecimal string " + value + " is incorrectly formatted for a Correlation Id"
                                  );
  
                  IllegalArgumentException e = new IllegalArgumentException(nlsMsg);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(this, tc, "setCorrelationId", e);
                  throw e;
              }
  
              /* Check each character is valid and for upper-case */
              for (int i = 3; i < length; i++) {
                  ch = value.charAt(i);
                  if (Character.digit(ch, 16) < 0) {
                      String nlsMsg = nls.getFormattedMessage("BAD_HEX_STRING_CWSIF0191"
                                                              , new Object[] { value }
                                                              , "The hexadecimal string " + value + " is incorrectly formatted for a Correlation Id"
                                      );
                      IllegalArgumentException e = new IllegalArgumentException(nlsMsg);
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.exit(this, tc, "setCorrelationId", e);
                      throw e;
                  }
                  if (Character.isUpperCase(ch))
                      needsConvert = true;
              }
  
              /* Convert if necessary */
              if (needsConvert) {
                  value = ID_STRING + value.substring(3).toLowerCase();
              }
  
          }
  
          if (value != null) {
              /* If we got to here, we have a the String and it must be OK */
              getApi().setField(JsApiAccess.CORRELATIONID_STRINGVALUE, value);
          }
          else {
              /* otherwise set the variant to empty */
              getApi().setChoiceField(JsApiAccess.CORRELATIONID, JsApiAccess.IS_CORRELATIONID_EMPTY);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "setCorrelationId");
      }