@Override
  public void check(ProjectStructureProblemsHolder problemsHolder) {
    final Project project = myContext.getProject();
    ProjectStructureConfigurable projectStructureConfigurable = myContext.getModulesConfigurator().getProjectStructureConfigurable();
    if (containsModuleWithInheritedSdk()) {
      ProjectSdksModel model = projectStructureConfigurable.getProjectJdksModel();
      Sdk sdk = model.getProjectSdk();
      if (sdk == null) {
        PlaceInProjectStructureBase place = new PlaceInProjectStructureBase(project, projectStructureConfigurable
          .createProjectConfigurablePlace(), this);
        problemsHolder.registerProblem(JavaUiBundle.message("project.roots.project.jdk.problem.message"), null,
                                       ProjectStructureProblemType.error("project-sdk-not-defined"), place,
                                       null);
      }
    }


    List<Chunk<ModuleSourceSet>> sourceSetCycles = ModuleCompilerUtil.computeSourceSetCycles(myContext.getModulesConfigurator());

    List<@Nls String> cycles = new ArrayList<>();

    for (Chunk<ModuleSourceSet> chunk : sourceSetCycles) {
      final Set<ModuleSourceSet> sourceSets = chunk.getNodes();
      List<@Nls String> names = new ArrayList<>();
      for (ModuleSourceSet sourceSet : sourceSets) {
        String name = sourceSet.getDisplayName();
        names.add(names.isEmpty() ? name : StringUtil.decapitalize(name));
      }
      cycles.add(StringUtil.join(names, ", "));
    }
    if (!cycles.isEmpty()) {
      final PlaceInProjectStructureBase place =
        new PlaceInProjectStructureBase(project, projectStructureConfigurable.createModulesPlace(), this);
      final String message;
      final HtmlChunk description;
      if (cycles.size() > 1) {
        message = JavaUiBundle.message("circular.dependencies.message");

        final String header = JavaUiBundle.message("module.circular.dependency.warning.description");

        final HtmlChunk[] liTags = cycles.stream()
          .map(c -> HtmlChunk.tag("li").addText(c))
          .toArray(HtmlChunk[]::new);

        final HtmlChunk.Element ol = HtmlChunk.tag("ol").style("padding-left: 30pt;")
          .children(liTags);

        description = new HtmlBuilder()
          .append(HtmlChunk.tag("b").addText(header))
          .append(ol)
          .toFragment()
        ;
      }
      else {
        message = JavaUiBundle.message("module.circular.dependency.warning.short", StringUtil.decapitalize(cycles.get(0)));
        description = HtmlChunk.empty();
      }
      problemsHolder.registerProblem(new ProjectStructureProblemDescription(message, description, place,
                                                                            ProjectStructureProblemType
                                                                              .warning("module-circular-dependency"),
                                                                            Collections.emptyList()));
    }
  }
@Override
  public void check(ProjectStructureProblemsHolder problemsHolder)