protected void tightMarshalThrowable2(OpenWireFormat wireFormat, Throwable o, DataByteArrayOutputStream dataOut,
BooleanStream bs) throws IOException {
if (bs.readBoolean()) {
String className = o instanceof OpenwireException ? ((OpenwireException)o).getClassName() : o.getClass().getName();
tightMarshalString2(new UTF8Buffer(className), dataOut, bs);
tightMarshalString2(new UTF8Buffer(o.getMessage()), dataOut, bs);
if (wireFormat.isStackTraceEnabled()) {
StackTraceElement[] stackTrace = o.getStackTrace();
dataOut.writeShort(stackTrace.length);
for (int i = 0; i < stackTrace.length; i++) {
StackTraceElement element = stackTrace[i];
tightMarshalString2(new UTF8Buffer(element.getClassName()), dataOut, bs);
tightMarshalString2(new UTF8Buffer(element.getMethodName()), dataOut, bs);
tightMarshalString2(new UTF8Buffer(element.getFileName()), dataOut, bs);
dataOut.writeInt(element.getLineNumber());
}
tightMarshalThrowable2(wireFormat, o.getCause(), dataOut, bs);
}
}