class UserGroup {

  private static final List<User> freeGroup = new ArrayList<>();
  private static final List<User> paidGroup = new ArrayList<>();

  /**
   * Add the passed {@link User} to the free user group list.
   *
   * @param user {@link User} to be added to the free group
   * @throws IllegalArgumentException when user is already added to the paid group
   * @see User
   */
  public static void addUserToFreeGroup(final User user) throws IllegalArgumentException {<FILL_FUNCTION_BODY>}

  /**
   * Add the passed {@link User} to the paid user group list.
   *
   * @param user {@link User} to be added to the paid group
   * @throws IllegalArgumentException when the user is already added to the free group
   * @see User
   */
  public static void addUserToPaidGroup(final User user) throws IllegalArgumentException {
    if (freeGroup.contains(user)) {
      throw new IllegalArgumentException("User already member of free group.");
    } else {
      if (!paidGroup.contains(user)) {
        paidGroup.add(user);
      }
    }
  }

  /**
   * Method to take a {@link User} to determine if the user is in the {@link UserGroup#paidGroup}.
   *
   * @param user {@link User} to check if they are in the {@link UserGroup#paidGroup}
   * @return true if the {@link User} is in {@link UserGroup#paidGroup}
   */
  public static boolean isPaid(User user) {
    return paidGroup.contains(user);
  }
}

    if (paidGroup.contains(user)) {
      throw new IllegalArgumentException("User already member of paid group.");
    } else {
      if (!freeGroup.contains(user)) {
        freeGroup.add(user);
      }
    }
  
<no_super_class>