@Override
  public Set<MavenArchetype> getArchetypes() {
    return doIndexAndRecoveryTask(() -> {
      Set<MavenArchetype> archetypes = new HashSet<>();
      IndexData indexData = myData;
      if (indexData == null) return Collections.emptySet();
      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());
  }
@Override
  public Set<MavenArchetype> getArchetypes()