code: public static BaseMessage createMessage(String strMessageClassName, BaseMessageHeader messageHeader, Object data)
      {
         BaseMessage message = null;
         
         if ((strMessageClassName == null)
             && (messageHeader != null))
         {
             strMessageClassName = (String)messageHeader.get(BaseMessageHeader.INTERNAL_MESSAGE_CLASS);
             if ((strMessageClassName == null) || (strMessageClassName.length() == 0))
             {
  //?               String strRequestType = (String)messageHeader.get(TrxMessageHeader.MESSAGE_REQUEST_TYPE);
  //?               if ((strRequestType == null) || (strRequestType.length() == 0) || (RequestType.MANUAL.equalsIgnoreCase(strRequestType)))
  //?                   strMessageClass = ManualMessage.class.getName();
             }
         }
         if ((strMessageClassName != null) && (strMessageClassName.length() > 0))
         {
             strMessageClassName = ClassServiceUtility.getFullClassName(strMessageClassName);
             Object obj = ClassServiceUtility.getClassService().makeObjectFromClassName(strMessageClassName);
             if (obj instanceof BaseMessage)
             {
                 message = (BaseMessage)obj;
                 message.init(messageHeader, null);
             }
             else if  (obj instanceof MessageRecordDesc)
             {
                 message = new TreeMessage(messageHeader, null);
                 ((MessageRecordDesc)obj).init(message, null);
             }
         }
         return message;
     }
docs: Setup this message given this internal data structure.
  @param data The data in an intermediate format.