JetFile: TypeParametersBeforeName.kt
  PACKAGE_DIRECTIVE
    <empty list>
  IMPORT_LIST
    <empty list>
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    TYPE_PARAMETER_LIST
      PsiElement(LT)('<')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('A')
      PsiElement(COMMA)(',')
      PsiWhiteSpace(' ')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('B')
      PsiElement(GT)('>')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('foo')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
  PsiWhiteSpace('\n')
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    TYPE_PARAMETER_LIST
      PsiElement(LT)('<')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('A')
      PsiElement(COMMA)(',')
      PsiWhiteSpace(' ')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('B')
      PsiElement(GT)('>')
    PsiWhiteSpace(' ')
    PsiErrorElement:Annotations are not allowed in this position
      ANNOTATION
        PsiElement(AT)('@')
        PsiElement(LBRACKET)('[')
        ANNOTATION_ENTRY
          CONSTRUCTOR_CALLEE
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
        PsiElement(RBRACKET)(']')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('foo')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
  PsiWhiteSpace('\n')
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    TYPE_PARAMETER_LIST
      PsiElement(LT)('<')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('A')
      PsiElement(COMMA)(',')
      PsiWhiteSpace(' ')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('B')
      PsiElement(GT)('>')
    PsiWhiteSpace(' ')
    TYPE_REFERENCE
      ANNOTATION
        PsiElement(AT)('@')
        PsiElement(LBRACKET)('[')
        ANNOTATION_ENTRY
          CONSTRUCTOR_CALLEE
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('a')
        PsiElement(RBRACKET)(']')
      PsiWhiteSpace(' ')
      USER_TYPE
        REFERENCE_EXPRESSION
          PsiElement(IDENTIFIER)('T')
    PsiElement(DOT)('.')
    PsiElement(IDENTIFIER)('foo')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      PsiElement(RPAR)(')')
  PsiWhiteSpace('\n\n')
  PROPERTY
    PsiElement(val)('val')
    PsiWhiteSpace(' ')
    TYPE_PARAMETER_LIST
      PsiElement(LT)('<')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('A')
      PsiElement(GT)('>')
    PsiWhiteSpace(' ')
    TYPE_REFERENCE
      USER_TYPE
        REFERENCE_EXPRESSION
          PsiElement(IDENTIFIER)('List')
        TYPE_ARGUMENT_LIST
          PsiElement(LT)('<')
          TYPE_PROJECTION
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('A')
          PsiElement(GT)('>')
    PsiElement(DOT)('.')
    PsiElement(IDENTIFIER)('foo')
  PsiWhiteSpace('\n')
  PROPERTY
    PsiElement(var)('var')
    PsiWhiteSpace(' ')
    TYPE_PARAMETER_LIST
      PsiElement(LT)('<')
      TYPE_PARAMETER
        PsiElement(IDENTIFIER)('A')
      PsiElement(GT)('>')
    PsiWhiteSpace(' ')
    TYPE_REFERENCE
      USER_TYPE
        REFERENCE_EXPRESSION
          PsiElement(IDENTIFIER)('List')
        TYPE_ARGUMENT_LIST
          PsiElement(LT)('<')
          TYPE_PROJECTION
            TYPE_REFERENCE
              USER_TYPE
                REFERENCE_EXPRESSION
                  PsiElement(IDENTIFIER)('A')
          PsiElement(GT)('>')
    PsiElement(DOT)('.')
    PsiElement(IDENTIFIER)('foo')
