docs: @Override
      public Collection<Asset> getFilteredAssets(final Map<FilterableAttribute, Collection<String>> filters) throws IOException, RequestFailureException {
          // Were any filters defined?
          if (filters == null || allFiltersAreEmpty(filters)) {
              return getAllAssets();
          }
  
          // Build up a filter string
          Collection<String> filterStrings = new HashSet<String>();
          for (Map.Entry<FilterableAttribute, Collection<String>> filter : filters.entrySet()) {
              Collection<String> values = filter.getValue();
              if (values != null && !values.isEmpty()) {
                  filterStrings.add(createListFilter(filter.getKey(), values));
              }
          }
  
          StringBuilder filterString = new StringBuilder("?");
          boolean isFirst = true;
          for (String filter : filterStrings) {
              if (isFirst) {
                  isFirst = false;
              } else {
                  filterString.append("&");
              }
              filterString.append(filter);
          }
  
          // Now do the filtered call into massive
          HttpURLConnection connection = createHttpURLConnectionToMassive("/assets" + filterString.toString());
          connection.setRequestMethod("GET");
          testResponseCode(connection);
          return JSONAssetConverter.readValues(connection.getInputStream());
      }