### Question:
BooleanBuilder implements Predicate, Cloneable { @Override public <R,C> R accept(Visitor<R,C> v, C context) { if (predicate != null) { return predicate.accept(v, context); } else { return null; } } BooleanBuilder();  BooleanBuilder(Predicate initial); @Override R accept(Visitor<R,C> v, C context); BooleanBuilder and(@Nullable Predicate right); BooleanBuilder andAnyOf(Predicate... args); BooleanBuilder andNot(Predicate right); @Override BooleanBuilder clone(); @Override boolean equals(Object o); @Nullable Predicate getValue(); @Override int hashCode(); boolean hasValue(); @Override BooleanBuilder not(); BooleanBuilder or(@Nullable Predicate right); BooleanBuilder orAllOf(Predicate... args); BooleanBuilder orNot(Predicate right); @Override Class<? extends Boolean> getType(); @Override String toString();  }### Answer:
@Test public void accept() { BooleanBuilder builder = new BooleanBuilder(); builder.and(first); builder.or(Expressions.booleanPath("condition")); assertEquals("true || condition", builder.accept(ToStringVisitor.DEFAULT, Templates.DEFAULT)); }