@Contract(pure = true)
  public static @NotNull LanguageMatcher match(@NotNull Language language) {
    if (language instanceof MetaLanguage) {
      return new MetaLanguageMatcher((MetaLanguage)language);
    }
    else {
      return new ExactMatcher(language);
    }
  }
@Contract(pure = true)
  public static @NotNull LanguageMatcher match(@NotNull Language language)