### Question:
BooleanBuilder implements Predicate, Cloneable { public BooleanBuilder or(@Nullable Predicate right) { if (right != null) { if (predicate == null) { predicate = right; } else { predicate = ExpressionUtils.or(predicate, right); } } return this; } 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 or_null_supported() { assertEquals(first, first.or(null)); }