private static void findMatchingOfflineUsers(Map<UUID, User> users, ConstraintNodeMatcher<Node> matcher, LuckPermsPlugin plugin) {
        Stream<UUID> stream;
        if (matcher == null) {
            stream = plugin.getStorage().getUniqueUsers().join().stream();
        } else {
            stream = plugin.getStorage().searchUserNodes(matcher).join().stream()
                    .map(NodeEntry::getHolder)
                    .distinct();
        }

        Set<UUID> uuids = stream
                .filter(uuid -> !users.containsKey(uuid))
                .sorted()
                .limit(MAX_USERS - users.size())
                .collect(Collectors.toSet());

        if (uuids.isEmpty()) {
            return;
        }

        // load users in bulk from storage
        Map<UUID, User> loadedUsers = plugin.getStorage().loadUsers(uuids).join();
        users.putAll(loadedUsers);

        // schedule cleanup
        for (UUID uniqueId : loadedUsers.keySet()) {
            plugin.getUserManager().getHouseKeeper().cleanup(uniqueId);
        }
    }
Generates a web editor request payload.

@param holders the holders to edit
@param tracks the tracks to edit
@param sender the sender who is creating the session
@param cmdLabel the command label used by LuckPerms
@param plugin the plugin
@return a payload
common/src/main/java/me/lucko/luckperms/common/webeditor/WebEditorRequest.java