private void parseFunctionType() {
      if (atToken(PyTokenTypes.LPAR)) {
        final SyntaxTreeBuilder.Marker funcTypeMark = myBuilder.mark();
        parseParameterTypeList();
        checkMatches(PyTokenTypes.RARROW, PyParsingBundle.message("rarrow.expected"));
        final boolean parsed = getExpressionParser().parseSingleExpression(false);
        if (!parsed) {
          myBuilder.error(PyParsingBundle.message("PARSE.expected.expression"));
        }
        funcTypeMark.done(PyFunctionTypeAnnotationElementTypes.FUNCTION_SIGNATURE);
      }
      recoverUntilMatches(PyParsingBundle.message("unexpected.tokens"));
    }
private void parseFunctionType()