public static Config merge(Config config, Config fallback) {
        var root1 = config.root();
        var root2 = fallback.root();
        var origin = new ContainerConfigOrigin(config.origin(), fallback.origin());
        var path = ConfigValuePath.root();

        var newRoot = mergeObjects(origin, path, root1, root2);

        return new SimpleConfig(origin, newRoot);
    }
@Test
    void testMergeRoots() {
        var config1 = MapConfigFactory.fromMap(Map.of(
            "field1", "value1"
        ));
        var config2 = MapConfigFactory.fromMap(Map.of(
            "field2", "value2"
        ));

        var config = MergeConfigFactory.merge(config1, config2);

        assertThat(config.get(ConfigValuePath.root().child("field1")))
            .isInstanceOf(ConfigValue.StringValue.class)
            .hasFieldOrPropertyWithValue("value", "value1");
        assertThat(config.get(ConfigValuePath.root().child("field2")))
            .isInstanceOf(ConfigValue.StringValue.class)
            .hasFieldOrPropertyWithValue("value", "value2");
    }