docs: @Nonnull
  	public final UnaryOperator<T> build() {
  
  		final UnaryOperator<T> eventuallyFinal = this.eventually;
  
  		UnaryOperator<T> retval;
  
  		final Case<LPredicate<T>, UnaryOperator<T>>[] casesArray = cases.toArray(new Case[cases.size()]);
  		retval = Function4U.<T> unaryOp(a -> {
  			try {
  				for (Case<LPredicate<T>, UnaryOperator<T>> aCase : casesArray) {
  					if (aCase.casePredicate().test(a)) {
  						return aCase.caseFunction().apply(a);
  					}
  				}
  
  				return eventuallyFinal.apply(a);
  			} catch (Error e) { // NOSONAR
  					throw e;
  				} catch (Throwable e) { // NOSONAR
  					throw Handler.handleOrPropagate(e, handling);
  				}
  			});
  
  		if (consumer != null) {
  			consumer.accept(retval);
  		}
  		return retval;
  	}