@Override
    public void applyBulkUpdate(BulkUpdate bulkUpdate) throws Exception {
        if (bulkUpdate.getDataType().isIncludingUsers()) {
            this.users.apply(true, true, root -> {
                for (Map.Entry<Object, ? extends ConfigurationNode> entry : root.getChildrenMap().entrySet()) {
                    processBulkUpdate(bulkUpdate, entry.getValue(), HolderType.USER);
                }
            });
        }

        if (bulkUpdate.getDataType().isIncludingGroups()) {
            this.groups.apply(true, true, root -> {
                for (Map.Entry<Object, ? extends ConfigurationNode> entry : root.getChildrenMap().entrySet()) {
                    processBulkUpdate(bulkUpdate, entry.getValue(), HolderType.GROUP);
                }
            });
        }
    }
Flat-file storage using Configurate {@link ConfigurationNode}s.
The data for users/groups/tracks is stored in a single shared file.
common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/CombinedConfigurateStorage.java