// '->' '?'? typeOrAnonymous
public static boolean functionType(PsiBuilder builder_, int level_) {
if (!recursion_guard_(builder_, level_, "functionType")) return false;
if (!nextTokenIs(builder_, OARROW)) return false;
boolean result_;
Marker marker_ = enter_section_(builder_, level_, _LEFT_, null);
result_ = consumeToken(builder_, OARROW);
result_ = result_ && functionType_1(builder_, level_ + 1);
result_ = result_ && typeOrAnonymous(builder_, level_ + 1);
exit_section_(builder_, level_, marker_, FUNCTION_TYPE, result_, false, null);
return result_;