private boolean parseTypeParameter() {
    if (isIdentifier(myBuilder) || atToken(PyTokenTypes.MULT) || atToken(PyTokenTypes.EXP)) {
      SyntaxTreeBuilder.Marker typeParamMarker = myBuilder.mark();

      if (atAnyOfTokens(PyTokenTypes.MULT, PyTokenTypes.EXP)) {
        nextToken();
      }

      if (!parseIdentifierOrSkip(PyTokenTypes.RBRACKET, PyTokenTypes.COMMA, PyTokenTypes.COLON)) {
        typeParamMarker.drop();
        return false;
      }

      if (matchToken(PyTokenTypes.COLON)) {
        if (!myContext.getExpressionParser().parseSingleExpression(false)) {
          myBuilder.error(PyParsingBundle.message("PARSE.expected.expression"));
        }
      }
      typeParamMarker.done(PyElementTypes.TYPE_PARAMETER);
      return true;
    }
    return false;
  }
private boolean parseTypeParameter()