// empty constructor
}
public NodeNumericRangeQuery<? extends Number> build(final QueryNode queryNode)
throws QueryNodeException {
final NodeNumericRangeQueryNode numericRangeNode = (NodeNumericRangeQueryNode) queryNode;
final NumericQueryNode lowerNumericNode = numericRangeNode.getLowerBound();
final NumericQueryNode upperNumericNode = numericRangeNode.getUpperBound();
final Number lowerNumber, upperNumber;
if (lowerNumericNode != null) {
lowerNumber = lowerNumericNode.getValue();
}
else {
lowerNumber = null;
}
if (upperNumericNode != null) {
upperNumber = upperNumericNode.getValue();
}
else {
upperNumber = null;
}
final NumericAnalyzer numericAnalyzer = numericRangeNode.getNumericAnalyzer();
final NumericType numberType = numericRangeNode.getNumericType();
final String field = numericRangeNode.getField().toString();
final boolean minInclusive = numericRangeNode.isLowerInclusive();
final boolean maxInclusive = numericRangeNode.isUpperInclusive();
final int precisionStep = numericAnalyzer.getPrecisionStep();
switch (numberType) {
case LONG:
return NodeNumericRangeQuery.newLongRange(field, precisionStep,