public Object readSymbol()
          throws IOException {
    if (trace >= API_TRACE_DETAILED) {
      debugNote("About to read symbol name.");
    }
    Object response = readObject();
    if (!(response instanceof String)) {
      throw new CycApiException("Expecting  a String, got: " + response.getClass() + " for object: " + response);
    }
    String name = (String) response;

    if (name.startsWith("?")) {
      return CycObjectFactory.makeCycVariable(name);
    } else {
      return CycObjectFactory.makeCycSymbol(name);
    }
  }