class FrenchSynthesizer extends BaseSynthesizer {

  public static final FrenchSynthesizer INSTANCE = new FrenchSynthesizer();

  private static final List<String> exceptionsEgrave = Arrays.asList(new String[]{"burkinabè", "koinè", "épistémè"});

  /** @deprecated use {@link #INSTANCE} */
  public FrenchSynthesizer(Language lang) {
    this();
  }

  private FrenchSynthesizer() {
    super("fr/fr.sor", "/fr/french_synth.dict", "/fr/french_tags.txt", "fr");
  }

  @Override
  protected boolean isException(String w) {<FILL_FUNCTION_BODY>}
}

    // remove: qq, qqe...
    if (w.startsWith("qq")) {
      return true;
    }
    // informè V ind pres 1 s
    if (w.endsWith("è") && !exceptionsEgrave.contains(w.toLowerCase())) {
      return true;
    }
    return false;
  
<methods>public void <init>(java.lang.String, java.lang.String, java.lang.String, org.languagetool.Language) ,public void <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String) ,public void <init>(java.lang.String, java.lang.String, org.languagetool.Language) ,public void <init>(java.lang.String, java.lang.String, java.lang.String) ,public java.lang.String getPosTagCorrection(java.lang.String) ,public java.lang.String getRomanNumber(java.lang.String) ,public java.lang.String getSpelledNumber(java.lang.String) ,public IStemmer getStemmer() ,public java.lang.String getTargetPosTag(List<java.lang.String>, java.lang.String) ,public java.lang.String[] synthesize(org.languagetool.AnalyzedToken, java.lang.String) throws java.io.IOException,public java.lang.String[] synthesize(org.languagetool.AnalyzedToken, java.lang.String, boolean) throws java.io.IOException,public java.lang.String[] synthesizeForPosTags(java.lang.String, Predicate<java.lang.String>) throws java.io.IOException<variables>public final java.lang.String SPELLNUMBER_FEMININE_TAG,public final java.lang.String SPELLNUMBER_ROMAN_TAG,public final java.lang.String SPELLNUMBER_TAG,private volatile Dictionary dictionary,private final non-sealed org.languagetool.synthesis.ManualSynthesizer manualSynthesizer,private final non-sealed org.languagetool.synthesis.Soros numberSpeller,protected volatile List<java.lang.String> possibleTags,private final non-sealed org.languagetool.synthesis.ManualSynthesizer removalSynthesizer,private final non-sealed org.languagetool.synthesis.ManualSynthesizer removalSynthesizer2,private final non-sealed java.lang.String resourceFileName,private final non-sealed org.languagetool.synthesis.Soros romanNumberer,private final non-sealed java.lang.String sorosFileName,private final non-sealed IStemmer stemmer,private final non-sealed java.lang.String tagFileName