code: public <T extends AbstractJsonMapping> T getResponse(Class<T> clazz, Map<String, String> properties) throws RottenTomatoesException {
          String url = ApiBuilder.create(properties);
          try {
              T wrapper = clazz.cast(MAPPER.readValue(getContent(url), clazz));
              int retry = 1;
  
              while (!wrapper.isValid() && "Account Over Queries Per Second Limit".equalsIgnoreCase(wrapper.getError()) && retry <= retryLimit) {
                  LOG.trace("Account over queries limit, waiting for {}ms.", retryDelay * retry);
                  sleeper(retry++);
                  wrapper = MAPPER.readValue(getContent(url), clazz);
              }
  
              if (wrapper.isValid()) {
                  return wrapper;
              } else {
                  throw new RottenTomatoesException(ApiExceptionType.MAPPING_FAILED, wrapper.getError(), url);
              }
          } catch (IOException ex) {
              throw new RottenTomatoesException(ApiExceptionType.MAPPING_FAILED, "Failed to map response", url, ex);
          }
      }
docs: Get the wrapper for the passed properties
  
  Will retry up to retry limit
  
  @param <T>
  @param clazz
  @param properties
  @return
  @throws RottenTomatoesException