class QuestionWhitespaceStrictRule extends QuestionWhitespaceRule {

  public QuestionWhitespaceStrictRule(ResourceBundle messages, Language language) {
    super(messages, language);
    setTags(Arrays.asList(Tag.picky));
    this.setDefaultTempOff();
  }

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

  @Override
  public String getDescription() {
    return "Insertion des espaces fines insécables";
  }

  @Override
  protected boolean isAllowedWhitespaceChar(AnalyzedTokenReadings[] tokens, int i) {<FILL_FUNCTION_BODY>}

}

    // Strictly speaking, the character before ?!; should be an
    // "espace fine insécable" (U+202f). In practise, an
    // "espace insécable" (U+00a0) is also often used. Let's accept both.
    if (i < 0) {
      return false;
    }
    return tokens[i].getToken().equals("\u202f") || tokens[i].getToken().equals("\u00a0")
      // covered by FRENCH_WHITESPACE (non strict). This makes both rules mutually exclusive
      || !tokens[i].isWhitespace();
  
<methods>public void <init>(java.util.ResourceBundle, org.languagetool.Language) ,public List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule> getAntiPatterns() ,public java.lang.String getDescription() ,public java.lang.String getId() ,public org.languagetool.rules.RuleMatch[] match(org.languagetool.AnalyzedSentence) <variables>private static final List<List<org.languagetool.rules.patterns.PatternToken>> ANTI_PATTERNS,private static final java.lang.String ESPACE_FINE_INSECABLE,private static final java.lang.String NBSP,private final non-sealed Supplier<List<org.languagetool.tagging.disambiguation.rules.DisambiguationPatternRule>> antiPatterns,private static final java.util.regex.Pattern urlPattern