assertTrue(lookAhead() == DeeTokens.OPEN_PARENS);
ParseHelper parse = new ParseHelper(lookAheadElement());
ParserState savedParserState = saveParserState();
DeeParser_RuleParameters fnParametersRule = thisParser().new DeeParser_RuleParameters(TplOrFnMode.FN);
fnParametersRule.parseParameters(parse);
if(!parse.ruleBroken) {
ArrayView<FunctionAttributes> fnAttributes = thisParser().parseFunctionAttributes();
if(lookAhead() == DeeTokens.OPEN_BRACE || lookAhead() == DeeTokens.LAMBDA) {
ArrayView<IFunctionParameter> fnParams = fnParametersRule.getAsFunctionParameters();
return parseFunctionLiteral_atFunctionBody(parse.nodeStart, null, null, fnParams, fnAttributes);
}
}
restoreOriginalState(savedParserState);