class Options {

    static Result<Nothing> writeToStream(final @NotNull byte[] bytesToWrite,
                                         final @NotNull Fun.ThrowingSupplier<OutputStream> streamSupplier) {
        try (OutputStream out = streamSupplier.tryGet()) {
            out.write(bytesToWrite);
            return Result.success(Nothing.instance);
        } catch (Exception e) {
            return Result.failure(e);
        }
    }

      Options();
      Options(final boolean justHelp,
            final boolean justVersion,
            final boolean storeBlobs,
            final @NotNull URL planUrl,
            final @NotNull ClassLoader scanClassLoader,
            final @NotNull File cacheDir,
            final @Nullable File opearFile,
            final @Nullable String planName,
            final @Nullable File planFile,
            final @Nullable File planFileBaseDir,
            final @NotNull List<File> preInstallFiles,
            final @NotNull List<File> repoInitFiles,
            final @NotNull List<String> runModes,
            final boolean noRunModes,
            final @NotNull List<File> extendedClassPathFiles,
            final boolean noHooks,
            final @NotNull List<File> scanFiles,
            final @NotNull Function<StructuredMessage, IO<Nothing>> printer,
            final @NotNull Severity failOnSeverity);

}