code: protected static <T> Filter<T> compose(Filter<T> filterOne, LogicalOperator op, Filter<T> filterTwo) {
  
      return filterOne == null ? filterTwo : (filterTwo == null ? filterOne
        : new ComposableFilter<>(filterOne, op, filterTwo));
    }
docs: Composes two {@link Filter} objects into a compound {@link Filter}, where the {@link Filter Filters} constitute
  both the left and right operands in the specified binary logical expression.
  
  @param <T> {@link Class type} of the object being filtered by this {@link Filter}.
  @param filterOne {@link Filter} in the left operand of the binary logical expression.
  @param op {@link LogicalOperator} used to combine the two {@link Filter} objects, which constitute
  the left and right operands in the binary logical expression.
  @param filterTwo {@link Filter} in the right operand of the binary logical expression.
  @return a {@link Filter} implementation combining both the {@link Filter} operands
  into a compound {@link Filter} using the given binary {@link LogicalOperator}.
  @see org.cp.elements.lang.LogicalOperator
  @see org.cp.elements.lang.Filter