/**
   * Un-marshal an object instance from the data input stream
   *
   * @param o the object to un-marshal
   * @param dataIn the data input stream to build the object from
   * @throws IOException
   */
  public void looseUnmarshal(OpenWireFormat wireFormat, Object o, DataByteArrayInputStream dataIn)
      throws IOException {
    super.looseUnmarshal(wireFormat, o, dataIn);

    BaseCommand info = (BaseCommand) o;
    info.setCommandId(dataIn.readInt());
    info.setResponseRequired(dataIn.readBoolean());
  }
  /** Write the booleans that this object uses to a BooleanStream */
  public void looseMarshal(OpenWireFormat wireFormat, Object o, DataByteArrayOutputStream dataOut)
      throws IOException {

    BaseCommand info = (BaseCommand) o;

    super.looseMarshal(wireFormat, o, dataOut);
    dataOut.writeInt(info.getCommandId());
    dataOut.writeBoolean(info.isResponseRequired());
  }
  /**
   * Write a object instance to data output stream
   *
   * @param o the instance to be marshaled
   * @param dataOut the output stream
   * @throws IOException thrown if an error occurs
   */
  public void tightMarshal2(
      OpenWireFormat wireFormat, Object o, DataByteArrayOutputStream dataOut, BooleanStream bs)
      throws IOException {
    super.tightMarshal2(wireFormat, o, dataOut, bs);

    BaseCommand info = (BaseCommand) o;
    dataOut.writeInt(info.getCommandId());
    bs.readBoolean();
  }