class ArabicHunspellSpellerRule extends HunspellRule {

  public static final String RULE_ID = "HUNSPELL_RULE_AR";
  private static final String RESOURCE_FILENAME = "/ar/hunspell/ar.dic";

  public ArabicHunspellSpellerRule(ResourceBundle messages, UserConfig userConfig) {
    super(messages, new Arabic(), userConfig);
  }

  public ArabicHunspellSpellerRule(ResourceBundle messages) {
    this(messages, null);
  }

  @Override
  public String getId() {
    return RULE_ID;
  }

  @Override
  @NotNull
  protected String getDictFilenameInResources(String langCountry) {
    return RESOURCE_FILENAME;
  }

  @Override
  protected String[] tokenizeText(String sentence) {<FILL_FUNCTION_BODY>}

  @Override
  protected boolean ignoreWord(String word) throws IOException {
    String striped = ArabicStringTools.removeTashkeel(word);
    return super.ignoreWord(striped);
  }

  @Override
  public boolean isMisspelled(String word) {
    String striped = ArabicStringTools.removeTashkeel(word);
    return super.isMisspelled(striped);
  }
  
  @Override
  protected boolean isLatinScript() {
    return false;
  }

}

    Pattern pattern = Pattern.compile("[^\\p{L}" + ArabicStringTools.TASHKEEL_CHARS + "]");
    return pattern.split(sentence);
  
<methods>public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig) ,public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig, List<org.languagetool.Language>) ,public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig, List<org.languagetool.Language>, org.languagetool.languagemodel.LanguageModel) ,public static Queue<java.lang.String> getActiveChecks() ,public java.lang.String getDescription() ,public java.lang.String getId() ,public List<java.lang.String> getSuggestions(java.lang.String) throws java.io.IOException,public boolean isMisspelled(java.lang.String) ,public org.languagetool.rules.RuleMatch[] match(org.languagetool.AnalyzedSentence) throws java.io.IOException<variables>protected static final java.lang.String FILE_EXTENSION,private final java.util.regex.Pattern MINUS_PLUS,private static final java.lang.String NON_ALPHABETIC,public static final java.lang.String RULE_ID,private static final java.util.regex.Pattern STARTS_WITH_TWO_UPPERCASE_CHARS,private static final java.lang.String[] WHITESPACE_ARRAY,private static final ConcurrentLinkedQueue<java.lang.String> activeChecks,private final List<java.lang.String> commonGermanWords,private final List<java.lang.String> commonPortugueseWords,private final non-sealed List<org.languagetool.rules.spelling.RuleWithLanguage> enSpellRules,protected volatile org.languagetool.rules.spelling.hunspell.HunspellDictionary hunspell,private static final Logger logger,private static final boolean monitorRules,private volatile boolean needsInit,protected java.util.regex.Pattern nonWordPattern,private final non-sealed org.languagetool.UserConfig userConfig