class SimpleReplaceRule extends AbstractSimpleReplaceRule2 {

  public static final String DUTCH_SIMPLE_REPLACE_RULE = "NL_SIMPLE_REPLACE";
  
  private static final Locale NL_LOCALE = new Locale("nl");

  public SimpleReplaceRule(ResourceBundle messages) throws IOException {
    super(messages, new Dutch());
    useSubRuleSpecificIds();
    setLocQualityIssueType(ITSIssueType.Misspelling);
    setCategory(new Category(new CategoryId("VERGISSINGEN"), "Vergissingen"));
    addExamplePair(Example.wrong("<marker>klaa</marker>."),
                   Example.fixed("<marker>klaar</marker>."));
  }

  @Override
  public CaseSensitivy getCaseSensitivy() {
    // edit by R. Baars 19-11-2022 to make routine case sensitive
    return CaseSensitivy.CS;
  }

  @Override
  public List<String> getFileNames() {
    return Collections.singletonList("/nl/replace.txt");
  }

  @Override
  public final String getId() {
    return DUTCH_SIMPLE_REPLACE_RULE;
  }

  @Override
  public String getDescription() {
    return "Snelle correctie van veel voorkomende vergissingen ($match)";
  }

  @Override
  public String getDescription(String details) {<FILL_FUNCTION_BODY>}

  @Override
  public String getShort() {
    return "Vergissing?";
  }

  @Override
  public String getMessage() {
    return "'$match' zou fout kunnen zijn. Misschien bedoelt u: $suggestions";
  }

  @Override
  public Locale getLocale() {
    return NL_LOCALE;
  }

}

    if (details != null) {
      return "Snelle correctie van veel voorkomende vergissingen: " + details;
    } else {
      return getDescription();
    }
  
<methods>public void <init>(java.util.ResourceBundle, org.languagetool.Language) ,public boolean checkKeyWordsAreKnownToSpeller() ,public boolean checkKeyWordsAreUnknownToSpeller() ,public org.languagetool.rules.AbstractSimpleReplaceRule2.CaseSensitivy getCaseSensitivy() ,public abstract java.lang.String getDescription() ,public java.lang.String getDescription(java.lang.String) ,public abstract List<java.lang.String> getFileNames() ,public List<java.net.URL> getFilePaths() ,public abstract java.lang.String getId() ,public abstract java.util.Locale getLocale() ,public abstract java.lang.String getMessage() ,public abstract java.lang.String getShort() ,public java.lang.String getSuggestionsSeparator() ,public List<Map<java.lang.String,org.languagetool.rules.SuggestionWithMessage>> getWrongWords() ,public org.languagetool.rules.RuleMatch[] match(org.languagetool.AnalyzedSentence) ,public boolean separateKeyWordsBySpeller() ,public void useSubRuleSpecificIds() <variables>private int MAX_LENGTH_SHORT_WORDS,private static final int MAX_TOKENS_IN_MULTIWORD,private boolean ignoreShortUppercaseWords,private volatile boolean initialized,protected final non-sealed org.languagetool.Language language,private Map<java.lang.String,org.languagetool.rules.SuggestionWithMessage> mFullNoSpace,private Map<java.lang.String,org.languagetool.rules.SuggestionWithMessage> mFullSpace,private Map<java.lang.String,java.lang.Integer> mStartNoSpace,private Map<java.lang.String,java.lang.Integer> mStartSpace,private boolean ruleHasSuggestions,protected boolean subRuleSpecificIds