class Premium {

  private static final List<String> tempNotPremiumRules = Arrays.asList();

  public static boolean isTempNotPremium(Rule rule) {
    return tempNotPremiumRules.contains(rule.getId());
  }
  
  public static boolean isPremiumStatusCheck(AnnotatedText text) {
    final String testRuleText = "languagetool testrule 8634756";
    final String testRuleText2 = "The languagetool testrule 8634756.";
    return testRuleText2.equals(text.getOriginalText()) || testRuleText.equals(text.getOriginalText());
  }

  public static Premium get() {
    String className = "org.languagetool.PremiumOn";
    try {
      Class<?> aClass = JLanguageTool.getClassBroker().forName(className);
      Constructor<?> constructor = aClass.getConstructor();
      return (Premium)constructor.newInstance();
    } catch (ClassNotFoundException e) {
      // 'PremiumOn' doesn't exist, thus this is the non-premium version
      return new PremiumOff();
    } catch (Exception e) {
      throw new RuntimeException("Object for class '" + className + "' could not be created", e);
    }
  }

  public static boolean isPremiumVersion() {<FILL_FUNCTION_BODY>}

  public abstract boolean isPremiumRule(Rule rule);

  /**
   * @deprecated Please use LtBuildInfo.PREMIUM.getBuildDate() instead.
   * @return premium build date
   */
  @Deprecated
  public String getBuildDate() {
    return LtBuildInfo.PREMIUM.getBuildDate();
  }

  /**
   * @deprecated Please use LtBuildInfo.PREMIUM.getShortGitId() instead.
   * @return short git ID
   */
  @Deprecated
  public String getShortGitId() {
    return LtBuildInfo.PREMIUM.getShortGitId();
  }

  /**
   * @deprecated Please use LtBuildInfo.PREMIUM.getVersion() instead.
   * @return premium version
   */
  @Deprecated
  public String getVersion() {
    return LtBuildInfo.PREMIUM.getVersion();
  }

}

    String className = "org.languagetool.PremiumOn";
    try {
      Class<?> aClass = JLanguageTool.getClassBroker().forName(className);
      Constructor<?> constructor = aClass.getConstructor();
      constructor.newInstance();
      return true;
    } catch (ClassNotFoundException e) {
      // doesn't exist, thus this is the non-premium version
      return false;
    } catch (Exception e) {
      throw new RuntimeException("Object for class '" + className + "' could not be created", e);
    }
  
<no_super_class>