docs: public Photosets getList(String userId, int perPage, int page, String primaryPhotoExtras) throws FlickrException {
          Map<String, Object> parameters = new HashMap<String, Object>();
          parameters.put("method", METHOD_GET_LIST);
  
          if (userId != null) {
              parameters.put("user_id", userId);
          }
  
          if (perPage > 0) {
              parameters.put("per_page", String.valueOf(perPage));
          }
  
          if (page > 0) {
              parameters.put("page", String.valueOf(page));
          }
  
          if (primaryPhotoExtras != null) {
              parameters.put("primary_photo_extras", primaryPhotoExtras);
          }
  
          Response response = transportAPI.get(transportAPI.getPath(), parameters, apiKey, sharedSecret);
          if (response.isError()) {
              throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
          }
          Photosets photosetsObject = new Photosets();
          Element photosetsElement = response.getPayload();
          photosetsObject.setCanCreate(XMLUtilities.getBooleanAttribute(photosetsElement, "cancreate"));
          photosetsObject.setPage(XMLUtilities.getIntAttribute(photosetsElement, "page"));
          photosetsObject.setPages(XMLUtilities.getIntAttribute(photosetsElement, "pages"));
          photosetsObject.setPerPage(XMLUtilities.getIntAttribute(photosetsElement, "perpage"));
          photosetsObject.setTotal(XMLUtilities.getIntAttribute(photosetsElement, "total"));
          List<Photoset> photosets = new ArrayList<Photoset>();
          NodeList photosetElements = photosetsElement.getElementsByTagName("photoset");
          for (int i = 0; i < photosetElements.getLength(); i++) {
              Element photosetElement = (Element) photosetElements.item(i);
              Photoset photoset = new Photoset();
              photoset.setId(photosetElement.getAttribute("id"));
  
              User owner = new User();
              owner.setId(photosetElement.getAttribute("owner"));
              photoset.setOwner(owner);
  
              Element primaryPhotoExtrasEl = XMLUtilities.getChild(photosetElement, "primary_photo_extras");
              Photo primaryPhoto;
              if (primaryPhotoExtrasEl != null) {
                  primaryPhoto = PhotoUtils.createPhoto(primaryPhotoExtrasEl);
              } else {
                  primaryPhoto = new Photo();
              }
              primaryPhoto.setId(photosetElement.getAttribute("primary"));
              primaryPhoto.setSecret(photosetElement.getAttribute("secret")); // TODO verify that this is the secret for the photo
              primaryPhoto.setServer(photosetElement.getAttribute("server")); // TODO verify that this is the server for the photo
              primaryPhoto.setFarm(photosetElement.getAttribute("farm"));
              photoset.setPrimaryPhoto(primaryPhoto);
  
              photoset.setSecret(photosetElement.getAttribute("secret"));
              photoset.setServer(photosetElement.getAttribute("server"));
              photoset.setFarm(photosetElement.getAttribute("farm"));
              photoset.setPhotoCount(photosetElement.getAttribute("photos"));
              photoset.setVideoCount(Integer.parseInt(photosetElement.getAttribute("videos")));
              photoset.setViewCount(Integer.parseInt(photosetElement.getAttribute("count_views")));
              photoset.setCommentCount(Integer.parseInt(photosetElement.getAttribute("count_comments")));
              photoset.setDateCreate(photosetElement.getAttribute("date_create"));
              photoset.setDateUpdate(photosetElement.getAttribute("date_update"));
  
              photoset.setIsCanComment("1".equals(photosetElement.getAttribute("can_comment")));
              photoset.setIsNeedsInterstitial("1".equals(photosetElement.getAttribute("needs_interstitial")));
              photoset.setIsVisible("1".equals(photosetElement.getAttribute("visibility_can_see_set")));
              photoset.setDescription(XMLUtilities.getChildValue(photosetElement, "description"));
  
              photoset.setTitle(XMLUtilities.getChildValue(photosetElement, "title"));
              photoset.setDescription(XMLUtilities.getChildValue(photosetElement, "description"));
  
              photosets.add(photoset);
          }
  
          photosetsObject.setPhotosets(photosets);
  
          return photosetsObject;
      }