docs: protected synchronized void dispose() {
          this.users--;
          if (this.users == 0) {
              try {
                  Client currentClient = this.client.get();
                  if (currentClient != null) {
                      currentClient.close();
                  }
              } catch (Exception x) {
                  // ignore
              }
          }
      }