Source:
<code>Predicate createPredicateNumeric(String theResourceName, String theParamName, From<?, ? extends BaseResourceIndexedSearchParam> theFrom, CriteriaBuilder builder, IQueryParameterType theParam, ParamPrefixEnum thePrefix, BigDecimal theValue, final Expression<BigDecimal> thePath, <START> String invalidMessageName) { <END> Predicate num; switch (thePrefix) { case GREATERTHAN: num = builder.gt(thePath, theValue); break; case GREATERTHAN_OR_EQUALS: num = builder.ge(thePath, theValue); break; case LESSTHAN: num = builder.lt(thePath, theValue); break; case LESSTHAN_OR_EQUALS: num = builder.le(thePath, theValue); break; case EQUAL: num = builder.equal(thePath, theValue); break; case NOT_EQUAL: num = builder.notEqual(thePath, theValue); break; case APPROXIMATE: BigDecimal mul = FuzzCalculator.calculateFuzzAmount(thePrefix, theValue); BigDecimal low = theValue.subtract(mul, MathContext.DECIMAL64); BigDecimal high = theValue.add(mul, MathContext.DECIMAL64); Predicate lowPred; Predicate highPred; lowPred = builder.ge(thePath.as(BigDecimal.class), low); highPred = builder.le(thePath.as(BigDecimal.class), high); num = builder.and(lowPred, highPred); ourLog.trace("Searching for <= val <= {}", low, high); break; case ENDS_BEFORE: case STARTS_AFTER: default: String msg = myContext.getLocalizer().getMessage(SearchBuilder.class, invalidMessageName, thePrefix.getValue(), theParam.getValueAsQueryToken(myContext)); throw new InvalidRequestException(msg); } if (theParamName == null) { return num; } return combineParamIndexPredicateWithParamNamePredicate(theResourceName, theParamName, theFrom, num); }</code><technical_language>This is of moments person designed a web UI tabs in editor.. :s</technical_language>

Target:
Predicate createPredicateNumeric(String theResourceName, String theParamName, From<?, ? extends BaseResourceIndexedSearchParam> theFrom, CriteriaBuilder builder, IQueryParameterType theParam, ParamPrefixEnum thePrefix, BigDecimal theValue, final Expression<BigDecimal> thePath, String invalidMessageName) { Predicate num; switch (thePrefix) { case GREATERTHAN: num = builder.gt(thePath, theValue); break; case GREATERTHAN_OR_EQUALS: num = builder.ge(thePath, theValue); break; case LESSTHAN: num = builder.lt(thePath, theValue); break; case LESSTHAN_OR_EQUALS: num = builder.le(thePath, theValue); break; case EQUAL: num = builder.equal(thePath, theValue); break; case NOT_EQUAL: num = builder.notEqual(thePath, theValue); break; case APPROXIMATE: BigDecimal mul = SearchFuzzUtil.calculateFuzzAmount(thePrefix, theValue); BigDecimal low = theValue.subtract(mul, MathContext.DECIMAL64); BigDecimal high = theValue.add(mul, MathContext.DECIMAL64); Predicate lowPred; Predicate highPred; lowPred = builder.ge(thePath.as(BigDecimal.class), low); highPred = builder.le(thePath.as(BigDecimal.class), high); num = builder.and(lowPred, highPred); ourLog.trace("Searching for <= val <= {}", low, high); break; case ENDS_BEFORE: case STARTS_AFTER: default: String msg = myContext.getLocalizer().getMessage(SearchBuilder.class, invalidMessageName, thePrefix.getValue(), theParam.getValueAsQueryToken(myContext)); throw new InvalidRequestException(msg); } if (theParamName == null) { return num; } return combineParamIndexPredicateWithParamNamePredicate(theResourceName, theParamName, theFrom, num); }