code: public synchronized void putString(String item)
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "putString", item);
  
        checkValid();
  
        // A String is presented by a BIT16 denoting the length followed by encoded bytes. If the
        // String is null, then a length of 1, followed by a single null byte (0x00) is written into
        // the buffer.
        if (item == null)
        {
           WsByteBuffer currentBuffer = getCurrentByteBuffer(3);
           currentBuffer.putShort((short) 1);
           currentBuffer.put(new byte[] { (byte) 0 });
        }
        else
        {
           try
           {
              byte[] stringAsBytes = item.getBytes(stringEncoding);
              WsByteBuffer currentBuffer = getCurrentByteBuffer(2 + stringAsBytes.length);
              currentBuffer.putShort((short) stringAsBytes.length);
              currentBuffer.put(stringAsBytes);
           }
           catch (UnsupportedEncodingException e)
           {
              FFDCFilter.processException(e, CLASS_NAME + ".putString",
                                          CommsConstants.COMMSBYTEBUFFER_PUTSTRING_01,
                                          this);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "Unable to encode String: ", e);
  
              SibTr.error(tc, "UNSUPPORTED_STRING_ENCODING_SICO8005", new Object[] {stringEncoding, e});
  
              throw new SIErrorException(
                 TraceNLS.getFormattedMessage(CommsConstants.MSG_BUNDLE, "UNSUPPORTED_STRING_ENCODING_SICO8005", new Object[] {stringEncoding, e}, null)
              );
           }
        }
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "putString");
     }
docs: Puts a String into the byte buffer encoded in UTF8.
  
  @param item