class DefaultSettingsWriter implements SettingsWriter {

    @Override
    public void write(File output, Map<String, Object> options, Settings settings) throws IOException {
        Objects.requireNonNull(output, "output cannot be null");
        Objects.requireNonNull(settings, "settings cannot be null");

        output.getParentFile().mkdirs();

        write(Files.newOutputStream(output.toPath()), options, settings);
    }

    @Override
    public void write(Writer output, Map<String, Object> options, Settings settings) throws IOException {
        Objects.requireNonNull(output, "output cannot be null");
        Objects.requireNonNull(settings, "settings cannot be null");

        try (Writer out = output) {
            new SettingsStaxWriter().write(out, settings.getDelegate());
        } catch (XMLStreamException e) {
            throw new IOException("Error writing settings", e);
        }
    }

    @Override
    public void write(OutputStream output, Map<String, Object> options, Settings settings) throws IOException {<FILL_FUNCTION_BODY>}
}

        Objects.requireNonNull(output, "output cannot be null");
        Objects.requireNonNull(settings, "settings cannot be null");

        try (OutputStream out = output) {
            new SettingsStaxWriter().write(out, settings.getDelegate());
        } catch (XMLStreamException e) {
            throw new IOException("Error writing settings", e);
        }
    
<no_super_class>