class RussianCompoundRule extends AbstractCompoundRule {

  private static volatile CompoundRuleData compoundData;

  public RussianCompoundRule(ResourceBundle messages, Language lang, UserConfig userConfig) throws IOException {
    super(messages, lang, userConfig,
            "Эти слова должны быть написаны через дефис.",
            "Эти слова должны быть написаны слитно.",
            "Эти слова могут быть написаны через дефис или слитно.");
    addExamplePair(Example.wrong("Собрание состоится в <marker>конференц зале</marker>."),
                   Example.fixed("Собрание состоится в <marker>конференц-зале</marker>."));
   super.sentenceStartsWithUpperCase = true;
  }

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

  @Override
  public String getDescription() {
    return "Правописание через дефис";
  }

  @Override
  public CompoundRuleData getCompoundRuleData() {<FILL_FUNCTION_BODY>}

}

    CompoundRuleData data = compoundData;
    if (data == null) {
      synchronized (RussianCompoundRule.class) {
        data = compoundData;
        if (data == null) {
          compoundData = data = new CompoundRuleData("/ru/compounds.txt");
        }
      }
    }

    return data;
  
<methods>public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig, java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException,public void <init>(java.util.ResourceBundle, org.languagetool.Language, org.languagetool.UserConfig, java.lang.String, java.lang.String, java.lang.String, java.lang.String) throws java.io.IOException,public int estimateContextForSureMatch() ,public abstract org.languagetool.rules.CompoundRuleData getCompoundRuleData() ,public abstract java.lang.String getDescription() ,public abstract java.lang.String getId() ,public boolean isMisspelled(java.lang.String) throws java.io.IOException,public org.languagetool.rules.RuleMatch[] match(org.languagetool.AnalyzedSentence) throws java.io.IOException,public java.lang.String mergeCompound(java.lang.String, boolean) ,public void useSubRuleSpecificIds() <variables>private static final java.util.regex.Pattern DASHES,private static final java.util.regex.Pattern DIGIT,static final int MAX_TERMS,private static final java.util.regex.Pattern WHITESPACE,private static final java.util.regex.Pattern WHITESPACE_DASH,protected final non-sealed org.languagetool.Language lang,protected final non-sealed org.languagetool.LinguServices linguServices,protected boolean sentenceStartsWithUpperCase,private final non-sealed java.lang.String shortDesc,protected boolean subRuleSpecificIds,private final non-sealed java.lang.String withHyphenMessage,private final non-sealed java.lang.String withOrWithoutHyphenMessage,private final non-sealed java.lang.String withoutHyphenMessage