code: public Members getList(String groupId, EnumSet<JinxConstants.MemberType> memberTypes, int perPage, int page) throws JinxException {
      JinxUtils.validateParams(groupId);
      Map<String, String> params = new TreeMap<String, String>();
      params.put("method", "flickr.groups.members.getList");
      params.put("group_id", groupId);
      if (memberTypes != null) {
        StringBuilder sb = new StringBuilder();
        for (JinxConstants.MemberType type : memberTypes) {
          sb.append(JinxUtils.memberTypeToMemberTypeId(type)).append(',');
        }
        params.put("membertypes", sb.deleteCharAt(sb.length() - 1).toString());
      }
      if (perPage > 0) {
        params.put("per_page", Integer.toString(perPage));
      }
      if (page > 0) {
        params.put("page", Integer.toString(page));
      }
      return jinx.flickrGet(params, Members.class);
    }
docs: <br>
  Get a list of the members of a group. The call must be signed on behalf of a Flickr member,
  and the ability to see the group membership will be determined by the Flickr member's group privileges.
  <br>
  This method requires authentication with 'read' permission.
  
  @param groupId     (Required) Return a list of members for this group. The group must be viewable by the Flickr member on whose behalf the API call is made.
  @param memberTypes (Optional) Return only these member types. If null, return all member types.
  (Returning super rare member type "1: narwhal" isn't supported by this API method)
  @param perPage     number of members to return per page. If this argument is less than 1, it defaults to 100. The maximum allowed value is 500.
  @param page        page of results to return. If this argument is less than 1, it defaults to 1.
  @return members object containing metadata and a list of members.
  @throws JinxException if required parameters are null or empty, or if there are any errors.
  @see <a href="https://www.flickr.com/services/api/flickr.groups.members.getList.html">flickr.groups.members.getList</a>