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();
          }
  
          Collection<Asset> allAssets = getAllAssets();
          Collection<Asset> filtered = new ArrayList<Asset>();
  
          assetLoop: for (Asset asset : allAssets) {
              filterAttribLoop: for (Entry<FilterableAttribute, Collection<String>> entry : filters.entrySet()) {
                  FilterableAttribute attrib = entry.getKey();
                  // List of values we are looking for
                  Collection<String> values = entry.getValue();
                  // List of values in the asset
                  Collection<String> assetValues = getValues(attrib, asset);
  
                  if (values != null && values.size() != 0) {
                      // Check each required value and see if the asset has it
                      for (String filterValue : values) {
                          // if we find a match stop checking this attribute and move to next attribute
                          if (assetValues.contains(filterValue)) {
                              continue filterAttribLoop;
                          }
                      }
                      // We never found a match for this attribute so move to next asset
                      continue assetLoop;
                  }
              }
              filtered.add(asset);
          }
  
          return filtered;
      }