PsiJavaFile:Tag4.java
  PsiImportList
    <empty list>
  PsiClass:Test
    PsiModifierList:
      <empty list>
    PsiKeyword:class('class')
    PsiWhiteSpace(' ')
    PsiIdentifier:Test('Test')
    PsiTypeParameterList
      <empty list>
    PsiReferenceList
      <empty list>
    PsiReferenceList
      <empty list>
    PsiWhiteSpace(' ')
    PsiJavaToken:LBRACE('{')
    PsiWhiteSpace('\n    ')
    PsiMethod:foo
      PsiDocComment
        PsiDocToken:DOC_COMMENT_START('/**')
        PsiWhiteSpace('\n     ')
        PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('*')
        PsiDocToken:DOC_COMMENT_DATA('  ')
        PsiDocTag:@param
          PsiDocToken:DOC_TAG_NAME('@param')
          PsiWhiteSpace(' ')
          PsiElement(DOC_PARAMETER_REF)
            PsiDocToken:DOC_TAG_VALUE_TOKEN('param')
          PsiWhiteSpace(' ')
          PsiDocToken:DOC_COMMENT_DATA('some param')
        PsiWhiteSpace('\n     ')
        PsiDocToken:DOC_COMMENT_END('*/')
      PsiWhiteSpace('\n    ')
      PsiModifierList:public
        PsiKeyword:public('public')
      PsiTypeParameterList
        <empty list>
      PsiWhiteSpace(' ')
      PsiTypeElement:void
        PsiKeyword:void('void')
      PsiWhiteSpace(' ')
      PsiIdentifier:foo('foo')
      PsiParameterList:(int param)
        PsiJavaToken:LPARENTH('(')
        PsiParameter:param
          PsiModifierList:
            <empty list>
          PsiTypeElement:int
            PsiKeyword:int('int')
          PsiWhiteSpace(' ')
          PsiIdentifier:param('param')
        PsiJavaToken:RPARENTH(')')
      PsiReferenceList
        <empty list>
      PsiWhiteSpace(' ')
      PsiCodeBlock
        PsiJavaToken:LBRACE('{')
        PsiWhiteSpace('\n    ')
        PsiJavaToken:RBRACE('}')
    PsiWhiteSpace('\n')
    PsiJavaToken:RBRACE('}')
