code: @SuppressWarnings("unused")
      public static void setUserId(String userId) {
          try {
              if ("".equals(userId)) userId = null;
              logDebug("setUserId(" + userId + ")");
  
              // Do nothing if not initialized
              if (!isInitialized()) {
                  logDebug("setting user id for next initialization");
                  sBeforeInitializationUserIdSet = true;
                  sBeforeInitializationUserId = userId;
                  return;
              }
              sBeforeInitializationUserIdSet = false;
              sBeforeInitializationUserId = null;
  
              String oldUserId = WonderPushConfiguration.getUserId();
              if (userId == null && oldUserId == null
                      || userId != null && userId.equals(oldUserId)) {
                  // User id is the same as before, nothing needs to be done
              } else {
                  // The user id changed, we must reset the access token
                  initForNewUser(userId);
              }
          } catch (Exception e) {
              Log.e(TAG, "Unexpected error while setting userId to \"" + userId + "\"", e);
          }
      }
docs: Sets the user id, used to identify a single identity across multiple devices,
  and to correctly identify multiple users on a single device.
  
  <p>If not called, the last used user id it assumed. Defaulting to {@code null} if none is known.</p>
  
  <p>Prefer calling this method just before calling {@link #initialize(Context)}, rather than just after.</p>
  
  <p>
  Upon changing userId, the access token is wiped, so avoid unnecessary calls, like calling with {@code null}
  just before calling with a user id.
  </p>
  
  @param userId
  The user id, unique to your application.
  Use {@code null} for anonymous users.<br />
  You are strongly encouraged to use your own unique internal identifier.