private ConfigurationNode readFile(Path file) throws IOException {
        ReentrantLock lock = Objects.requireNonNull(this.ioLocks.get(file));
        lock.lock();
        try {
            if (!Files.exists(file)) {
                return null;
            }

            return this.loader.loader(file).load();
        } finally {
            lock.unlock();
        }
    }
Flat-file storage using Configurate {@link ConfigurationNode}s.
The data for each user/group/track is stored in a separate file.
common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/SeparatedConfigurateStorage.java