@SuppressWarnings("rawtypes")
@Override
public ParseResult parse(final TokenList tokens, final int templatePos) {
final String op = (String) tokens.get(templatePos);
final Number number = (Number) tokens.get(templatePos + 1);
Number result = null;
if (op.equals("-") && (templatePos == 0 || !(tokens.get(templatePos-1) instanceof Number))) {
result = (Number) number.opposite();
} else if (op.equals("sqrt")) {
result = FloatingPoint.valueOf(Math.sqrt(number.doubleValue()));
} else if (op.equals("abs")) {