docs: public org.w3c.dom.Node getMessageBody(Object rawData, boolean bReturnCopy)
      {
          SOAPMessage message = (SOAPMessage)rawData;
          try {
              SOAPPart sp = message.getSOAPPart();
  
              if (bReturnCopy)
              {
                  // We need to do the following steps to add the document to this soap body:
                  // 1. Transform this SOAPPart to DOM
                  // 2. Add this document to the SOAPBody.
                  // 3. Put it back in the SOAP object
      
                  // 1. Transform this SOAPPart to DOM
                  TransformerFactory tFact = TransformerFactory.newInstance();
                  Transformer transformer = tFact.newTransformer();
                  Source src = sp.getContent();
      
                  DocumentBuilder db = Utility.getDocumentBuilder();
                  DocumentFragment docFrag = null;
                  synchronized (db)
                  {
                      Document doc = this.getScratchDocument(db);
                      docFrag = doc.createDocumentFragment();
                      Result result = new DOMResult(docFrag);
                      transformer.transform(src, result);
                  }
      
                  // 2. Add this document to the SOAPBody.
                  org.w3c.dom.Element el = (org.w3c.dom.Element)docFrag.getFirstChild();
      
                  NodeList nodeList = null;
      
                  nodeList = el.getChildNodes();
                  org.w3c.dom.Element elBody = null;
                  for (int i = 0; i < nodeList.getLength(); i++)
                  {
                      if ("Body".equalsIgnoreCase(nodeList.item(i).getLocalName()))
                      {
                          elBody = (org.w3c.dom.Element)nodeList.item(i);
                          break;
                      }
                  }
                  org.w3c.dom.Element elDoc = null;
                  nodeList = elBody.getChildNodes();
                  for (int i = 0; i < nodeList.getLength(); i++)
                  {
                      String strName = nodeList.item(i).getLocalName();
                      if ((strName != null) && (strName.length() > 0))
                      {       // First item in the body is the OTA message
                          elDoc = (org.w3c.dom.Element)nodeList.item(i);
                          break;
                      }
                  }
      
                  return elDoc;
              }
              else
              {
                  // Retrieve the envelope from the soap part to start building
                  // the soap message.
                  SOAPEnvelope envelope = sp.getEnvelope();
                  
                  // Create a soap header from the envelope.
                  //?SOAPHeader header = envelope.getHeader();
                  
                  // Create a soap body from the envelope.
                  SOAPBody body = envelope.getBody();
  
                  Iterator<?> iterator = body.getChildElements();
                  while (iterator.hasNext())
                  {
                      Object nextNode = iterator.next();
                      if (!(nextNode instanceof Element))
                          continue;
                      Element node = (Element)nextNode;
                  
                      if (node instanceof SOAPElement)    // The one and only
                          return node;
                  }
              }
          } catch(Throwable ex) {
              ex.printStackTrace();
          }
          return null;
      }