class MorfologikItalianSpellerRule extends MorfologikSpellerRule {

  private static final String RESOURCE_FILENAME = "/it/hunspell/it_IT.dict";

  public MorfologikItalianSpellerRule(ResourceBundle messages, Language language, UserConfig userConfig,
      List<Language> altLanguages) throws IOException {
    super(messages, language, userConfig, altLanguages);
  }

  @Override
  public String getFileName() {
    return RESOURCE_FILENAME;
  }

  @Override
  public String getId() {
    return "MORFOLOGIK_RULE_IT_IT";
  }

  protected List<SuggestedReplacement> orderSuggestions(List<SuggestedReplacement> suggestions, String word) {<FILL_FUNCTION_BODY>}

}

    List<SuggestedReplacement> newSuggestions = new ArrayList<>();
    List<String> originalSuggestionsStr = new ArrayList<>();
    for (SuggestedReplacement suggestion : suggestions) {
      originalSuggestionsStr.add(suggestion.getReplacement());
    }
    for (SuggestedReplacement suggestion : suggestions) {
      String suggestionStr = suggestion.getReplacement();
      // original word is not capitalized, suggestion is capitalized,
      // and lowercase suggestion also exists
      if (!StringTools.isCapitalizedWord(word) && StringTools.isCapitalizedWord(suggestionStr)
          && (originalSuggestionsStr.contains(suggestionStr.toLowerCase()))) {
        continue;
      }
      newSuggestions.add(suggestion);
    }
    return newSuggestions;

  
<methods>public void <init>(java.util.ResourceBundle, org.languagetool.Language) throws java.io.IOException,public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig) throws java.io.IOException,public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig, List<org.languagetool.Language>) throws java.io.IOException,public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.GlobalConfig, org.languagetool.UserConfig, List<org.languagetool.Language>, org.languagetool.languagemodel.LanguageModel, org.languagetool.Language) throws java.io.IOException,public java.lang.String getDescription() ,public abstract java.lang.String getFileName() ,public abstract java.lang.String getId() ,public List<java.lang.String> getSpellingSuggestions(java.lang.String) throws java.io.IOException,public boolean isMisspelled(java.lang.String) throws java.io.IOException,public org.languagetool.rules.RuleMatch[] match(org.languagetool.AnalyzedSentence) throws java.io.IOException,public void setIgnoreTaggedWords() ,public void setLocale(java.util.Locale) ,public java.util.regex.Pattern tokenizingPattern() <variables>static final int MAX_FREQUENCY_FOR_SPLITTING,private boolean checkCompound,private java.util.regex.Pattern compoundRegex,protected java.util.Locale conversionLocale,protected final non-sealed org.languagetool.GlobalConfig globalConfig,private boolean ignoreTaggedWords,private static final Logger logger,protected final non-sealed org.languagetool.Language motherTongue,private static final java.util.regex.Pattern pStartsWithNumbersBullets,private static final java.util.regex.Pattern pStartsWithNumbersBulletsExceptions,protected org.languagetool.rules.spelling.morfologik.MorfologikMultiSpeller speller1,protected org.languagetool.rules.spelling.morfologik.MorfologikMultiSpeller speller2,protected org.languagetool.rules.spelling.morfologik.MorfologikMultiSpeller speller3,private final non-sealed org.languagetool.UserConfig userConfig