code: public static Iterable<BoxRetentionPolicy.Info> getAll(
              String name, String type, String userID, int limit, final BoxAPIConnection api, String ... fields) {
          QueryStringBuilder queryString = new QueryStringBuilder();
          if (name != null) {
              queryString.appendParam("policy_name", name);
          }
          if (type != null) {
              queryString.appendParam("policy_type", type);
          }
          if (userID != null) {
              queryString.appendParam("created_by_user_id", userID);
          }
          if (fields.length > 0) {
              queryString.appendParam("fields", fields);
          }
          URL url = RETENTION_POLICIES_URL_TEMPLATE.buildWithQuery(api.getBaseURL(), queryString.toString());
          return new BoxResourceIterable<BoxRetentionPolicy.Info>(api, url, limit) {
  
              @Override
              protected BoxRetentionPolicy.Info factory(JsonObject jsonObject) {
                  BoxRetentionPolicy policy = new BoxRetentionPolicy(api, jsonObject.get("id").asString());
                  return policy.new Info(jsonObject);
              }
  
          };
      }
docs: Returns all the retention policies with specified filters.
  @param name a name to filter the retention policies by. A trailing partial match search is performed.
  Set to null if no name filtering is required.
  @param type a policy type to filter the retention policies by. Set to null if no type filtering is required.
  @param userID a user id to filter the retention policies by. Set to null if no type filtering is required.
  @param limit the limit of items per single response. The default value is 100.
  @param api the API connection to be used by the resource.
  @param fields the fields to retrieve.
  @return an iterable with all the retention policies met search conditions.