@Nonnull
	public final BinaryOperator<T> build() {

		final BinaryOperator<T> eventuallyFinal = this.eventually;

		BinaryOperator<T> retval;

		final Case<LBiPredicate<T, T>, BinaryOperator<T>>[] casesArray = cases.toArray(new Case[cases.size()]);
		retval = Function4U.<T> binaryOp((a1, a2) -> {
			try {
				for (Case<LBiPredicate<T, T>, BinaryOperator<T>> aCase : casesArray) {
					if (aCase.casePredicate().test(a1, a2)) {
						return aCase.caseFunction().apply(a1, a2);
					}
				}

				return eventuallyFinal.apply(a1, a2);
			} catch (Error e) { // NOSONAR
					throw e;
				} catch (Throwable e) { // NOSONAR
					throw Handler.handleOrPropagate(e, handling);
				}
			});

		if (consumer != null) {
			consumer.accept(retval);
		}
		return retval;
	}
@ Nonnull public final BinaryOperator < T > build ( ) { final BinaryOperator < T > eventuallyFinal = this . eventually ; BinaryOperator < T > retval ; final Case < LBiPredicate < T , T > , BinaryOperator < T > > [ ] casesArray = cases . toArray ( new Case [ cases . size ( ) ] ) ; retval = Function4U . < T > binaryOp ( ( a1 , a2 ) -> { try { for ( Case < LBiPredicate < T , T > , BinaryOperator < T > > aCase : casesArray ) { if ( aCase . casePredicate ( ) . test ( a1 , a2 ) ) { return aCase . caseFunction ( ) . apply ( a1 , a2 ) ; } } return eventuallyFinal . apply ( a1 , a2 ) ; } catch ( Error e ) { throw e ; } catch ( Throwable e ) { throw Handler . handleOrPropagate ( e , handling ) ; } } ) ; if ( consumer != null ) { consumer . accept ( retval ) ; } return retval ; }
Builds the functional interface implementation and if previously provided calls the consumer.