docs: @Nullable
    public IUser createPredefinedUser (@Nonnull @Nonempty final String sID,
                                       @Nonnull @Nonempty final String sLoginName,
                                       @Nullable final String sEmailAddress,
                                       @Nonnull final String sPlainTextPassword,
                                       @Nullable final String sFirstName,
                                       @Nullable final String sLastName,
                                       @Nullable final String sDescription,
                                       @Nullable final Locale aDesiredLocale,
                                       @Nullable final Map <String, String> aCustomAttrs,
                                       final boolean bDisabled)
    {
      ValueEnforcer.notEmpty (sLoginName, "LoginName");
      ValueEnforcer.notNull (sPlainTextPassword, "PlainTextPassword");
  
      if (getUserOfLoginName (sLoginName) != null)
      {
        // Another user with this login name already exists
        AuditHelper.onAuditCreateFailure (User.OT, "login-name-already-in-use", sLoginName, "predefined-user");
        return null;
      }
  
      // Create user
      final User aUser = new User (sID,
                                   sLoginName,
                                   sEmailAddress,
                                   GlobalPasswordSettings.createUserDefaultPasswordHash (new PasswordSalt (),
                                                                                         sPlainTextPassword),
                                   sFirstName,
                                   sLastName,
                                   sDescription,
                                   aDesiredLocale,
                                   aCustomAttrs,
                                   bDisabled);
  
      m_aRWLock.writeLocked ( () -> {
        internalCreateItem (aUser);
      });
      AuditHelper.onAuditCreateSuccess (User.OT,
                                        aUser.getID (),
                                        "predefined-user",
                                        sLoginName,
                                        sEmailAddress,
                                        sFirstName,
                                        sLastName,
                                        sDescription,
                                        aDesiredLocale,
                                        aCustomAttrs,
                                        Boolean.valueOf (bDisabled));
  
      // Execute callback as the very last action
      m_aCallbacks.forEach (aCB -> aCB.onUserCreated (aUser, true));
  
      return aUser;
    }