public static GeneratedResources getGeneratedResourcesObject(String generatedResourcesString) throws JsonProcessingException {
        return objectMapper.readValue(generatedResourcesString, GeneratedResources.class);
    }
@Test
    void getGeneratedResourcesObjectFromJar() throws Exception {
        ClassLoader originalClassLoader = addJarToClassLoader();
        Optional<File> optionalIndexFile = getFileFromFileName("IndexFile.testb_json");
        assertThat(optionalIndexFile).isNotNull().isPresent();
        assertThat(optionalIndexFile).get().isInstanceOf(MemoryFile.class);
        MemoryFile memoryFile = (MemoryFile) optionalIndexFile.get();
        IndexFile indexFile = new IndexFile((MemoryFile) optionalIndexFile.get());
        assertThat(indexFile.getContent()).isEqualTo(memoryFile.getContent());
        GeneratedResources retrieved = JSONUtils.getGeneratedResourcesObject(indexFile);
        assertThat(retrieved).isNotNull();
        String fullClassName = "full.class.Name";
        GeneratedResource expected1 = new GeneratedClassResource(fullClassName);
        LocalUri modelLocalUriId = new ReflectiveAppRoot("test")
                .get(ComponentFoo.class)
                .get("this", "is", "fri")
                .asLocalUri();
        ModelLocalUriId localUriId = new ModelLocalUriId(modelLocalUriId);
        GeneratedResource expected2 = new GeneratedExecutableResource(localUriId,
                                                                      Collections.singletonList(fullClassName));
        assertThat(retrieved).contains(expected1);
        assertThat(retrieved).contains(expected2);
        restoreClassLoader(originalClassLoader);
    }