code: @Override
      public Collection<Attack> findAttacks(final SearchCriteria criteria) {
          if (criteria == null) {
              throw new IllegalArgumentException("criteria must be non-null");
          }
  
          Collection<Attack> matches = new ArrayList<>();
  
          try {
              RiakSet set = client.execute(
                      new FetchSet.Builder(attacks)
                              .build()
              ).getDatatype();
              for(BinaryValue binaryValue: set.view()) {
                  Attack attack = gson.fromJson(binaryValue.toStringUtf8(), Attack.class);
                  if (isMatchingAttack(criteria, attack)) {
                      matches.add(attack);
                  }
              }
          } catch (ExecutionException e) {
              logger.error("Fetching attacks from RiakDB failed", e);
              e.printStackTrace();
          } catch (InterruptedException e) {
              logger.error("Fetching attacks from RiakDB was interrupted", e);
              e.printStackTrace();
          }
  
          return matches;
      }
docs: {@inheritDoc}