docs: public static void traceMessage(TraceComponent _tc, MessageProcessor localME, SIBUuid8 remoteME, String operation, Object connection, AbstractMessage msg) {
      
      // Trace if either the callers trace is enabled, or our own trace group
      if (tc.isDebugEnabled() || _tc.isDebugEnabled()) {
  
        StringBuilder buff = new StringBuilder();
        buff.append("MECOMMS");
  
        try {
    
          // Append operation details
          buff.append("[");
          buff.append((localME!=null)?localME.getMessagingEngineName():"???");
          buff.append(operation);
          buff.append(remoteME);
          buff.append("] ");
    
          // Append the details of the message
          try {
            msg.getTraceSummaryLine(buff);      
          } catch (Exception e) {
            // No FFDC code needed
            // We failed to get the message summary line, just print the message class instead.
            // We know this can happen within unit tests, because the MFP getter methods used
            // to build the summary line can throw a NullPointerException if the message is not
            // fully initialized. However, no circumstances are known for this to happen in
            // a 'real' messaging engine.
            String safeMsgSummary = (msg != null)?msg.getClass().getName():"null";
            buff.append(" SUMMARY TRACE FAILED. Message class=" + safeMsgSummary);
          }
          
          // Add details identifying the link/stream/destination at the end of the line.
          // As this is on every line, I've tried to limit it as much as possible
          buff.append(" [C=");
          buff.append((connection!=null)?Integer.toHexString(connection.hashCode()):null);
          buff.append(",D=");
          buff.append(msg.getGuaranteedTargetDestinationDefinitionUUID());
          buff.append(",S=");
          buff.append(msg.getGuaranteedStreamUUID());
          buff.append("]");
          
        } catch (Exception e) {
          // No FFDC code needed
          // We encountered an unexpected runtime exception. Try to print a bit of helpful info.
          String safeMsgSummary = (msg != null)?msg.getClass().getName():"null";
          buff.append(" SUMMARY TRACE FAILED. Message class=" + safeMsgSummary);
        }
        
        // Preferentially trace with our trace group, to allow a grep on this class name
        if (tc.isDebugEnabled()) {
          SibTr.debug(tc, buff.toString());
        }
        else {
          SibTr.debug(_tc, buff.toString());
        }
  
      }
      
    }