class ExtensionStorage {

    private static final Pattern COMMENT = Pattern.compile("#.*");
    private static final Pattern WHITESPACE = Pattern.compile("\\s+");

    protected final ExtensionAnnotationProcessor processor;

    public ExtensionStorage(ExtensionAnnotationProcessor processor) {
        this.processor = processor;
    }

    public abstract Map<String, Set<String>> read();

    public abstract void write(Map<String, Set<String>> extensions);

    /**
     * Helper method.
     */
    protected Filer getFiler() {
        return processor.getProcessingEnvironment().getFiler();
    }

    /**
     * Helper method.
     */
    protected void error(String message, Object... args) {
        processor.error(message, args);
    }

    /**
     * Helper method.
     */
    protected void error(Element element, String message, Object... args) {
        processor.error(element, message, args);
    }

    /**
     * Helper method.
     */
    protected void info(String message, Object... args) {
        processor.info(message, args);
    }

    /**
     * Helper method.
     */
    protected void info(Element element, String message, Object... args) {
        processor.info(element, message, args);
    }

    public static void read(Reader reader, Set<String> entries) throws IOException {<FILL_FUNCTION_BODY>}

}

        try (BufferedReader bufferedReader = new BufferedReader(reader)) {
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                line = COMMENT.matcher(line).replaceFirst("");
                line = WHITESPACE.matcher(line).replaceAll("");
                if (line.length() > 0) {
                    entries.add(line);
                }
            }
        }
    
<no_super_class>