public boolean load() throws IOException, LineParserException {
        if (!path.exists()) {
            unsaved = true;
            return false;
        }
        try (LineNumberReader lnr = new LineNumberReader(
                    new BufferedReader(new FileReader(path)))) {
            
            String line = lnr.readLine();
            try {
                long version = Long.decode(line);
                if (version != VERSION) {
                    throw new LineParserException(
                            "deprecated configuration", lnr.getLineNumber());
                }
            } catch (NumberFormatException e) {
                throw new LineParserException(
                        "non-number version id", lnr.getLineNumber());
            }
            parseProperties(lnr);
            unsaved = (lnr.getLineNumber() - 1 != entries.size());
            return true;
        } catch (IOException | LineParserException e) {
            reset();
            unsaved = true;
            throw e;
        }
    }