public static synchronized Object evalSubL(CycAccess connection, String subl) {
    Object result = null;
    try {
      if (CycConnection.inAWTEventThread()) {
        throw new RuntimeException("Unable to communicate with Cyc from the AWT event dispatch thread.");
      }
      long resultMsecs = 0;
      if(useTiming) {
        resultMsecs = System.currentTimeMillis();
      }
      result = connection.converseObject(subl);
      if(useTiming) {
        System.out.println("Finished call: " + subl);
        resultMsecs = System.currentTimeMillis() - resultMsecs;
        System.out.println("Call took: " + resultMsecs + " msecs.");
      }
    } catch (IOException e) {
      throw new CycIOException(e);
    }
    return result;
  }