private TextDescriptor @NotNull [] retrieveURLs(@NotNull String prefix, @NotNull String suffix) {
    Set<TextDescriptor> urls = new LinkedHashSet<>();
    FileType[] fileTypes = FileTypeManager.getInstance().getRegisteredFileTypes();
    for (FileType fileType : fileTypes) {
      List<FileNameMatcher> matchers = FileTypeManager.getInstance().getAssociations(fileType);
      for (FileNameMatcher matcher : matchers) {
        if (matcher instanceof ExactFileNameMatcher exactFileNameMatcher) {
          String fileName = StringUtil.trimStart(exactFileNameMatcher.getFileName(), ".");
          String resourcePath = getResourceLocation(prefix + "." + fileName + suffix);
          URL resource = myLoader.getResource(resourcePath);
          if (resource != null) urls.add(new ResourceTextDescriptor(myLoader, resourcePath));
        }
        else if (matcher instanceof ExtensionFileNameMatcher extensionFileNameMatcher) {
          String extension = extensionFileNameMatcher.getExtension();
          for (int i = 0; ; i++) {
            String resourcePath = getResourceLocation(prefix + "." + extension + (i == 0 ? "" : Integer.toString(i))
                                                      + suffix);
            URL resource = myLoader.getResource(resourcePath);
            if (resource == null) break;
            urls.add(new ResourceTextDescriptor(myLoader, resourcePath));
          }
        }
      }
    }
    if (urls.isEmpty() && !mySkipBeforeAfter) {
      URL descriptionUrl = myLoader.getResource(getResourceLocation(DESCRIPTION_FILE_NAME));
      String url = descriptionUrl.toExternalForm();
      URL descriptionDirectory = null;
      String[] children;
      Exception cause = null;
      try {
        descriptionDirectory = new URL(url.substring(0, url.lastIndexOf('/')));
        URI uri = descriptionDirectory.toURI();
        children = uri.isOpaque() ? null : ObjectUtils.notNull(new File(uri).list(), ArrayUtilRt.EMPTY_STRING_ARRAY);
      }
      catch (URISyntaxException | IllegalArgumentException | MalformedURLException e) {
        cause = e;
        children = null;
      }
      LOG.error("URLs not found for available file types and prefix: '" + prefix
                + "', suffix: '" + suffix + "';" +
                " in directory: '" + descriptionDirectory + "'" +
                (children == null ? "" : "; directory contents: " + Arrays.asList(children)), cause);
      return EMPTY_EXAMPLE;
    }
    return urls.toArray(new TextDescriptor[0]);
  }
private TextDescriptor @NotNull [] retrieveURLs(@NotNull String prefix, @NotNull String suffix)