class OakMachine {

    @SuppressWarnings("WeakerAccess")
    public <E extends Throwable> void initAndInspect(final InspectBody<E> inspectBody)
            throws AbortedScanException, RepositoryException, E {
        adminInitAndInspect(admin -> {
            final Session inspectSession = Util.wrapSessionReadOnly(admin);
            inspectBody.tryAccept(inspectSession);
        });
    }

    private  OakMachine(final Packaging packagingService,
                       final List<ProgressCheck> progressChecks,
                       final ErrorListener errorListener,
                       final List<URL> preInstallUrls,
                       final List<InitStage> initStages,
                       final JcrCustomizer jcrCustomizer,
                       final InstallHookProcessorFactory installHookProcessorFactory,
                       final ClassLoader installHookClassLoader,
                       final boolean enablePreInstallHooks,
                       final InstallHookPolicy scanInstallHookPolicy,
                       final Supplier<NodeStore> nodeStoreSupplier,
                       final SubpackageSilencer subpackageSilencer,
                       final RepoInitProcessor repoInitProcessor,
                       final SlingSimulatorBackend slingSimulator,
                       final Set<String> runModes);

}