private BigInteger readBignumBody(final boolean shouldBeNegative)
          throws IOException {
    int length = readInt();
    if (trace == API_TRACE_DETAILED) {
      debugNote("readBignumBody shouldBeNegative=" + shouldBeNegative + " length=" + length);
    }
    byte[] b = new byte[length];
    for (int i = length - 1; i >= 0; i--) {
      int j = readInt();
      if (trace == API_TRACE_DETAILED) {
        debugNote("\t" + j);
      }
      b[i] = (byte) j;
    }
    return new BigInteger((shouldBeNegative) ? -1 : 1, b);
  }