private Object maybeReadSequence(int cfaslOpcode) throws IOException {
    switch (cfaslOpcode) {
      case CFASL_LIST:
        return readCycList();
      case CFASL_DOTTED:
        return readCons();
      case CFASL_VECTOR:
        return reportUnhandledCfaslOpcode(cfaslOpcode);
      case CFASL_STRING:
        int off = 0;
        int len = readInt();
        byte[] s = new byte[len];
        while (off < len) {
          off += read(s, off, len - off);
        }
        return new String(s, "UTF-8");
      default:
        return null;
    }
  }