private static Generic parsePostfix( @Nonnull List<String> names, final Generic content, @Nullable final Generic previousSumElement, @Nonnull final Parameters p) throws ParseException { checkTripleFactorial(previousSumElement, p); for (int i = 0; i < names.size(); i++) { final PostfixFunctionParser parser = new PostfixFunctionParser(names.get(i)); final String functionName = parser.parse(p, previousSumElement); if (functionName == null) { continue; } final Generic[] parameters = previousSumElement == null ? new Generic[] {content} : new Generic[] {content, previousSumElement}; final Operator function = registry.get(functionName, parameters); if (function != null) { return parsePostfix(names, function.expressionValue(), previousSumElement, p); } throw p.exceptionsPool.obtain( p.position.intValue(), p.expression, Messages.msg_4, singletonList(functionName)); } return content; }