code: private Object readContent(byte tc) throws ClassNotFoundException,
              IOException {
          switch (tc) {
              case TC_BLOCKDATA:
                  return readBlockData();
              case TC_BLOCKDATALONG:
                  return readBlockDataLong();
              case TC_CLASS:
                  return readNewClass(false);
              case TC_CLASSDESC:
                  return readNewClassDesc(false);
              case TC_ARRAY:
                  return readNewArray(false);
              case TC_OBJECT:
                  return readNewObject(false);
              case TC_STRING:
                  return readNewString(false);
              case TC_LONGSTRING:
                  return readNewLongString(false);
              case TC_REFERENCE:
                  return readCyclicReference();
              case TC_NULL:
                  return null;
              case TC_EXCEPTION:
                  Exception exc = readException();
                  throw new WriteAbortedException("Read an exception", exc);
              case TC_RESET:
                  resetState();
                  return null;
              default:
                  throw corruptStream(tc);
          }
      }
docs: Reads the content of the receiver based on the previously read token
  {@code tc}.
  
  @param tc
  The token code for the next item in the stream
  @return the object read from the stream
  
  @throws IOException
  If an IO exception happened when reading the class
  descriptor.
  @throws ClassNotFoundException
  If the class corresponding to the object being read could not
  be found.