Set<MavenArchetype> () { return doIndexAndRecoveryTask(() -> { Set<MavenArchetype> archetypes = new HashSet<>(); IndexData indexData = myData; indexData.archetypeIdToDescriptionMap.consumeKeysWithExistingMapping(ga -> { List<String> gaParts = split(ga, ":"); String groupId = gaParts.get(0); String artifactId = gaParts.get(1); try { for (String vd : indexData.archetypeIdToDescriptionMap.get(ga)) { int index = vd.indexOf(':'); if (index == -1) continue; String version = vd.substring(0, index); String description = vd.substring(index + 1); archetypes.add(new MavenArchetype(groupId, artifactId, version, myRepositoryPathOrUrl, description)); } } catch (IOException e) { throw new UncheckedIOException(e); } }); return archetypes; }, Collections.emptySet()); }