presto-session-property-managers/src/main/java/io/prestosql/plugin/session/file/FileSessionPropertyManager.java/FileSessionPropertyManager/FileSessionPropertyManager
class FileSessionPropertyManager:    @Inject
    public FileSessionPropertyManager(FileSessionPropertyManagerConfig config)
    {
        requireNonNull(config, "config is null");

        Path configurationFile = config.getConfigFile().toPath();
        try {
            sessionMatchSpecs = CODEC.fromJson(Files.readAllBytes(configurationFile));
        }
        catch (IOException e) {
            throw new UncheckedIOException(e);
        }
        catch (IllegalArgumentException e) {
            Throwable cause = e.getCause();
            if (cause instanceof UnrecognizedPropertyException) {
                UnrecognizedPropertyException ex = (UnrecognizedPropertyException) cause;
                String message = format("Unknown property at line %s:%s: %s",
                        ex.getLocation().getLineNr(),
                        ex.getLocation().getColumnNr(),
                        ex.getPropertyName());
                throw new IllegalArgumentException(message, e);
            }
            if (cause instanceof JsonMappingException) {
                // remove the extra "through reference chain" message
                if (cause.getCause() != null) {
                    cause = cause.getCause();
                }
                throw new IllegalArgumentException(cause.getMessage(), e);
            }
            throw e;
        }
    }