SemanticQuery implements Iterable<SemanticQueryTerm> { public String description() { return terms().stream() .map(SemanticQueryTerm::description) .collect(Collectors.joining(" OR ")); }  abstract ImmutableSet<SemanticQueryTerm> terms(); static SemanticQuery create(Collection<SemanticQueryTerm> queryTerms); static SemanticQuery create(); static SemanticQuery create(SemanticQueryTerm... queryTerms); static SemanticQuery create(String queryTermValue); Map<String, Set<String>> groupValuesByCategory(); @Override Iterator<SemanticQueryTerm> iterator(); boolean isEmpty(); boolean isNotEmpty(); int size(); String toJson(); String toUrlEncodedJson(); static SemanticQuery fromJson(String json); static SemanticQuery fromUrlEncodedJson(String json); String description();  }
@Test public void descriptionForUsers() { assertThat(subject.description().split(" OR ")).hasSize(3); }