code: public synchronized void join(MucEnterConfiguration mucEnterConfiguration)
          throws XMPPErrorException, NoResponseException, NotConnectedException, InterruptedException, NotAMucServiceException {
          // If we've already joined the room, leave it before joining under a new
          // nickname.
          if (joined) {
              try {
                  leaveSync();
              }
              catch (XMPPErrorException | NoResponseException | MucNotJoinedException e) {
                  LOGGER.log(Level.WARNING, "Could not leave MUC prior joining, assuming we are not joined", e);
              }
          }
          enter(mucEnterConfiguration);
      }
docs: Joins the chat room using the specified nickname and password. If already joined
  using another nickname, this method will first leave the room and then
  re-join using the new nickname.<p>
  
  To control the amount of history to receive while joining a room you will need to provide
  a configured DiscussionHistory object.<p>
  
  A password is required when joining password protected rooms. If the room does
  not require a password there is no need to provide one.<p>
  
  If the room does not already exist when the user seeks to enter it, the server will
  decide to create a new room or not.
  
  @param mucEnterConfiguration the configuration used to enter the MUC.
  @throws XMPPErrorException if an error occurs joining the room. In particular, a
  401 error can occur if no password was provided and one is required; or a
  403 error can occur if the user is banned; or a
  404 error can occur if the room does not exist or is locked; or a
  407 error can occur if user is not on the member list; or a
  409 error can occur if someone is already in the group chat with the same nickname.
  @throws NoResponseException if there was no response from the server.
  @throws NotConnectedException
  @throws InterruptedException
  @throws NotAMucServiceException