code: public Mappings filter(final Predicate<int[]> predicate) {
          return new Mappings(query, target, Iterables.filter(iterable, predicate));
      }
docs: Filter the mappings and keep only those which match the provided
  predicate (Guava).
  
  <blockquote><pre>{@code
  
  final IAtomContainer query;
  final IAtomContainer target;
  
  // obtain only the mappings where the first atom in the query is
  // mapped to the first atom in the target
  Mappings mappings = Pattern.findSubstructure(query)
  .matchAll(target)
  .filter(new Predicate<int[]>() {
  public boolean apply(int[] input) {
  return input[0] == 0;
  }});
  
  }</pre></blockquote>
  
  @param predicate a predicate
  @return fluent-api reference