### Question:
CodestartCatalogLoader { public static CodestartCatalog<CodestartProjectInput> loadDefaultCatalog(CodestartPathLoader pathLoader, String first, String... more) throws IOException { final List<Codestart> codestarts = loadCodestarts(pathLoader, first, more); return new GenericCodestartCatalog<>(codestarts); } private  CodestartCatalogLoader(); static CodestartCatalog<CodestartProjectInput> loadDefaultCatalog(CodestartPathLoader pathLoader,
            String first,
            String... more); static Collection<Codestart> loadUserDirectoryCodestarts(Path directory); static List<Codestart> loadCodestarts(CodestartPathLoader pathLoader, String first, String... more);  }### Answer:
@Test void testLoadCodestartsFromDefaultDir() throws IOException { final CodestartCatalog<CodestartProjectInput> catalog = CodestartCatalogLoader .loadDefaultCatalog(resourceLoader, "codestarts/core", "codestarts/examples"); assertThat(catalog.getCodestarts()).extracting(Codestart::getName) .containsExactlyInAnyOrder("y", "maven", "config-properties", "config-yaml", "foo", "a", "b", "replace", "t", "example-with-b", "example1", "example2", "example-forbidden"); checkLanguages(catalog, Sets.newSet("y", "z"), "a", "b"); checkLanguages(catalog, Sets.newSet("config-properties", "config-yaml", "foo", "a", "b", "replace")); checkLanguages(catalog, Sets.newSet("t"), "a"); checkLanguages(catalog, Sets.newSet("example1"), "a"); checkLanguages(catalog, Sets.newSet("example2"), "b"); checkLanguages(catalog, Sets.newSet("example-forbidden")); }
@Test void testLoadCodestartsFromSubDir() throws IOException { final CodestartCatalog<CodestartProjectInput> catalog = CodestartCatalogLoader.loadDefaultCatalog(resourceLoader, "codestarts/examples"); assertThat(catalog.getCodestarts()).extracting(Codestart::getName) .containsExactlyInAnyOrder("example1", "example2", "example-forbidden"); }