@NotNull
  private static <E extends ModulePackagingElementBase> List<? extends Module> getAvailableModules(@NotNull final ArtifactEditorContext context,
                                                                                                   @NotNull Artifact artifact,
                                                                                                   @NotNull ModuleElementTypeBase<E> elementType,
                                                                                                   final Module... allModules) {
    final Set<Module> modules = new HashSet<>();
    for (Module module : allModules) {
      if (elementType.isSuitableModule(context.getModulesProvider(), module)) {
        modules.add(module);
      }
    }

    ArtifactUtil.processPackagingElements(artifact, elementType, moduleElement -> {
      modules.remove(moduleElement.findModule(context));
      return true;
    }, context, true);
    return new ArrayList<>(modules);
  }
@NotNull
  private static <E extends ModulePackagingElementBase> List<? extends Module> getAvailableModules(@NotNull final ArtifactEditorContext context,
                                                                                                   @NotNull Artifact artifact,
                                                                                                   @NotNull ModuleElementTypeBase<E> elementType,
                                                                                                   final Module... allModules)