docs: public String getMessageVersion(BaseMessage externalMessage)
      {
          String version = null;
          if (!(externalMessage.getExternalMessage() instanceof SoapTrxMessageIn))
              return null;
          SOAPMessage message = (SOAPMessage)((SoapTrxMessageIn)externalMessage.getExternalMessage()).getRawData();
          try {
              // Message creation takes care of creating the SOAPPart - a
              // required part of the message as per the SOAP 1.1
              // specification.
              SOAPPart sp = message.getSOAPPart();
              
              // 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 hdr = envelope.getHeader();
              
              // Get the body
              SOAPBody body = envelope.getBody();
              SOAPElement element = this.getElement(body, null);
              if (element != null)
              {
                  QName na = new QName("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation");
                  String attribute = element.getAttributeValue(na);
                  if (attribute != null)
                  {
                      Record recMessageControl = this.getRecord(MessageControlModel.MESSAGE_CONTROL_FILE);
                      if (recMessageControl == null)
                          recMessageControl = Record.makeRecordFromClassName(MessageControlModel.THICK_CLASS, this);
                      version = ((MessageControlModel)recMessageControl).getVersionFromSchemaLocation(attribute);
                  }
              }
          } catch(Throwable ex) {
              ex.printStackTrace();
          }
          if (version != null)
              return version;
          return super.getMessageVersion(externalMessage);    // No type found.
      }