code: public final ControlMessage createInboundControlMessage(byte rawMessage[], int offset, int length)
                                                    throws MessageDecodeFailedException {
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())SibTr.entry(tc, "createInboundControlMessage", new Object[]{ rawMessage, Integer.valueOf(offset), Integer.valueOf(length)});
  
      JsMsgObject jmo = new JsMsgObject(ControlAccess.schema, rawMessage, offset, length);
  
      /* We need to return an instance of the appropriate specialisation.       */
      ControlMessage message = makeInboundControlMessage(jmo, ((Byte)jmo.getField(ControlAccess.SUBTYPE)).intValue());
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "createInboundControlMessage", message);
      return message;
  
    }
docs: Create a ControlMessage of appropriate specialization to represent an
  inbound message.
  (To be called by the Communications component.)
  
  @param rawMessage  The inbound byte array containging a complete message
  @param offset      The offset within the byte array at which the message begins
  @param length      The length of the message within the byte array
  
  @return An new instance of a sub-class of ControlMessage
  
  @exception MessageDecodeFailedException Thrown if the inbound message could not be decoded