/**
 *  @throws java.lang.NullPointerException
 */
-----
Groovy script
  GrDocComment
    PsiElement(GDOC_COMMENT_START)('/**')
    PsiWhiteSpace('\n ')
    PsiElement(GDOC_LEADING_ASTERISKS)('*')
    PsiElement(GDOC_COMMENT_DATA)('  ')
    GroovyDocTag
      PsiElement(GDOC_TAG_NAME)('@throws')
      PsiWhiteSpace(' ')
      GrDocReferenceElement
        Reference element
          Reference element
            Reference element
              PsiElement(identifier)('java')
            PsiElement(.)('.')
            PsiElement(identifier)('lang')
          PsiElement(.)('.')
          PsiElement(identifier)('NullPointerException')
    PsiWhiteSpace('\n ')
    PsiElement(GDOC_COMMENT_END)('*/')