code: public boolean pause() {
          assertUnlocked();
          lock.lock();
          AttrMaxPause maxPause = null;
          try {
              if (cmParams == null) {
                  return false;
              }
  
              maxPause = cmParams.getMaxPause();
              if (maxPause == null) {
                  return false;
              }
          } finally {
              lock.unlock();
          }
          try {
              send(ComposableBody.builder()
                      .setAttribute(Attributes.PAUSE, maxPause.toString())
                      .build());
          } catch (BOSHException boshx) {
              LOG.log(Level.FINEST, "Could not send pause", boshx);
          }
          return true;
      }
docs: Attempt to pause the current session.  When supported by the remote
  connection manager, pausing the session will result in the connection
  manager closing out all outstanding requests (including the pause
  request) and increases the inactivity timeout of the session.  The
  exact value of the temporary timeout is dependent upon the connection
  manager.  This method should be used if a client encounters an
  exceptional temporary situation during which it will be unable to send
  requests to the connection manager for a period of time greater than
  the maximum inactivity period.
  
  The session will revert back to it's normal, unpaused state when the
  client sends it's next message.
  
  @return {@code true} if the connection manager supports session pausing,
  {@code false} if the connection manager does not support session
  pausing or if the session has not yet been established