public List<ModuleEntry> listFullModules() {
        // keep the order for used modules
        List<ModuleEntry> moduleEntries =
                usedModules.stream()
                        .map(name -> new ModuleEntry(name, true))
                        .collect(Collectors.toList());
        loadedModules.keySet().stream()
                .filter(name -> !usedModules.contains(name))
                .forEach(name -> moduleEntries.add(new ModuleEntry(name, false)));
        return moduleEntries;
    }
@Test
    void testListFullModules() {
        ModuleMock x = new ModuleMock("x");
        ModuleMock y = new ModuleMock("y");
        ModuleMock z = new ModuleMock("z");

        manager.loadModule("y", y);
        manager.loadModule("x", x);
        manager.loadModule("z", z);
        manager.useModules("z", "y");

        assertThat(manager.listFullModules())
                .isEqualTo(
                        getExpectedModuleEntries(2, "z", "y", CoreModuleFactory.IDENTIFIER, "x"));
    }