public Guid readGuid()
          throws IOException {
    final byte[] data = new byte[16]; // @todo resource this
    for (int i = 0; i < 16; i++) {
      final int currByte = read();
      if (currByte == -1) {
        throw new RuntimeException("Illegal end of stream");
      }
      data[i] = (byte) currByte;
    }

    final Guid guid = CycObjectFactory.makeGuid(data);
    if (trace == API_TRACE_DETAILED) {
      debugNote("readGuid: " + guid);
    }
    return guid;
  }