code: private List<ScoreWeight> processWidgetScores(List<Widget> widgets, ScoreCriteriaSettings scoreCriteriaSettings) {
      List<ScoreWeight> scoreWeights = new ArrayList<>();
  
      Map<String, ScoreComponentSettings> scoreParamSettingsMap = generateWidgetSettings(scoreCriteriaSettings);
  
      Set<String> widgetTypes = scoreParamSettingsMap.keySet();
      if (widgetTypes.isEmpty()) {
        return null;
      }
  
      //For each widget calculate score
      for (String widgetType : widgetTypes) {
        ScoreComponentSettings scoreSettings = scoreParamSettingsMap.get(widgetType);
        WidgetScore widgetScore = getWidgetScoreByType(widgetType);
        ScoreWeight score = widgetScore.processWidgetScore(
          getWidgetByName(widgets, widgetType),
          scoreSettings
          );
        LOGGER.info("Widget for type: " + widgetType + " score" + score);
  
        if (null != score) {
          setWidgetAlert(score, scoreCriteriaSettings.getComponentAlert());
          scoreWeights.add(score);
        }
      }
  
      return scoreWeights;
    }
docs: Process scores for each widget based on widget settings
  
  @param widgets List of widgets
  @param scoreCriteriaSettings Score Criteria Settings
  @return List of widget scores