void (@NotNull Class<? extends Factory> factory) { if (isInitialized()) { if (factory.isInstance(ourFactory)) { return; } logFactoryChanged(factory); } try { Constructor<? extends Factory> constructor = factory.getDeclaredConstructor(); constructor.setAccessible(true); ourFactory = constructor.newInstance(); } catch (Exception e) { //noinspection CallToPrintStackTrace e.printStackTrace(); throw new RuntimeException(e); } }