docs: public synchronized void close() throws InterruptedException {
          if (!state.isAlive()) {
              if (LOG.isDebugEnabled()) {
                  LOG.debug("Close called on already closed client");
              }
              return;
          }
  
          if (LOG.isDebugEnabled()) {
              LOG.debug("Closing session: 0x" + Long.toHexString(getSessionId()));
          }
  
          try {
              cnxn.close();
          } catch (IOException e) {
              if (LOG.isDebugEnabled()) {
                  LOG.debug("Ignoring unexpected exception during close", e);
              }
          }
  
          LOG.debug("Session: 0x" + Long.toHexString(getSessionId()) + " closed");
      }