code: public void execute(Query query, Destination destination)
              throws QueryException {
          if (query == null) {
              throw new IllegalArgumentException("query cannot be null");
          }
          if (destination == null) {
              throw new IllegalArgumentException("resultsHandler cannot be null");
          }
          LOGGER.log(Level.INFO, "Executing query {0}", query.getName());
          this.abstractionFinder.doFind(query, destination);
          LOGGER.log(Level.INFO, "Query {0} execution complete", query.getName());
      }
docs: Executes a query.
  
  Protempa determines which propositions to retrieve from the underlying
  data sources and compute as the union of the proposition ids specified in
  the supplied {@link Query} and the proposition ids returned from the
  results handler's {@link QueryResultsHandler#getPropositionIdsNeeded() }
  method.
  
  @param query a {@link Query}. Cannot be <code>null</code>.
  @param destination a destination. Cannot be <code>null</code>.
  @throws QueryException if an error occurred during query.