@Override
    public <T extends ComponentRoot> T get(Class<T> providerId) {
        try {
            return providerId.getConstructor().newInstance();
        } catch (ReflectiveOperationException e) {
            throw new IllegalArgumentException(e);
        }
    }
@Test
    void getNoDefaultConstructorImplementation() {
        IllegalArgumentException thrown = assertThrows(
                IllegalArgumentException.class,
                () -> appRoot.get(ComponentRootNoDefaultConstructor.class),
                "Expected constructor to throw, but it didn't"
        );
        String expectedMessage = "java.lang.NoSuchMethodException";
        assertThat(thrown.getMessage()).startsWith(expectedMessage);
    }