@Override
    public void loadAllTracks() throws IOException {
        List<String> tracks = new ArrayList<>();
        this.tracks.apply(false, true, root -> {
            tracks.addAll(root.getChildrenMap().keySet().stream()
                    .map(Object::toString)
                    .collect(Collectors.toList()));
        });

        if (!Iterators.tryIterate(tracks, this::loadTrack)) {
            throw new RuntimeException("Exception occurred whilst loading a track");
        }

        this.plugin.getTrackManager().retainAll(tracks);
    }
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