class App {

  /**
   * Block 1 shows the {@link PropertiesFeatureToggleVersion} being run with {@link Properties}
   * setting the feature toggle to enabled.
   *
   * <p>Block 2 shows the {@link PropertiesFeatureToggleVersion} being run with {@link Properties}
   * setting the feature toggle to disabled. Notice the difference with the printed welcome message
   * the username is not included.
   *
   * <p>Block 3 shows the {@link
   * com.iluwatar.featuretoggle.pattern.tieredversion.TieredFeatureToggleVersion} being set up with
   * two users on who is on the free level, while the other is on the paid level. When the {@link
   * Service#getWelcomeMessage(User)} is called with the paid {@link User} note that the welcome
   * message contains their username, while the same service call with the free tier user is more
   * generic. No username is printed.
   *
   * @see User
   * @see UserGroup
   * @see Service
   * @see PropertiesFeatureToggleVersion
   * @see com.iluwatar.featuretoggle.pattern.tieredversion.TieredFeatureToggleVersion
   */
  public static void main(String[] args) {<FILL_FUNCTION_BODY>}
}


    final var properties = new Properties();
    properties.put("enhancedWelcome", true);
    var service = new PropertiesFeatureToggleVersion(properties);
    final var welcomeMessage = service.getWelcomeMessage(new User("Jamie No Code"));
    LOGGER.info(welcomeMessage);

    // ---------------------------------------------

    final var turnedOff = new Properties();
    turnedOff.put("enhancedWelcome", false);
    var turnedOffService = new PropertiesFeatureToggleVersion(turnedOff);
    final var welcomeMessageturnedOff =
        turnedOffService.getWelcomeMessage(new User("Jamie No Code"));
    LOGGER.info(welcomeMessageturnedOff);

    // --------------------------------------------

    var service2 = new TieredFeatureToggleVersion();

    final var paidUser = new User("Jamie Coder");
    final var freeUser = new User("Alan Defect");

    UserGroup.addUserToPaidGroup(paidUser);
    UserGroup.addUserToFreeGroup(freeUser);

    final var welcomeMessagePaidUser = service2.getWelcomeMessage(paidUser);
    final var welcomeMessageFreeUser = service2.getWelcomeMessage(freeUser);
    LOGGER.info(welcomeMessageFreeUser);
    LOGGER.info(welcomeMessagePaidUser);
  
<no_super_class>