//full
enum a implements A.B.C {
  @NotNull @Property item1 (a, b) {
    def class a {}
    {a = 2}
    native def String a = b = 4
     Integer getInteger() {
       a = 3
     } 
  }
}
-----
Groovy script
  PsiComment(line comment)('//full')
  PsiElement(new line)('\n')
  Enumeration definition
    Modifiers
      <empty list>
    PsiElement(enum)('enum')
    PsiWhiteSpace(' ')
    PsiElement(identifier)('a')
    PsiWhiteSpace(' ')
    Implements clause
      PsiElement(implements)('implements')
      PsiWhiteSpace(' ')
      Reference element
        Reference element
          Reference element
            PsiElement(identifier)('A')
          PsiElement(.)('.')
          PsiElement(identifier)('B')
        PsiElement(.)('.')
        PsiElement(identifier)('C')
    PsiWhiteSpace(' ')
    Type definition body
      PsiElement({)('{')
      PsiWhiteSpace('\n  ')
      Enumeration constants
        Enumeration constant
          Modifiers
            Annotation
              PsiElement(@)('@')
              Reference element
                PsiElement(identifier)('NotNull')
              Annotation arguments
                <empty list>
            PsiWhiteSpace(' ')
            Annotation
              PsiElement(@)('@')
              Reference element
                PsiElement(identifier)('Property')
              Annotation arguments
                <empty list>
          PsiWhiteSpace(' ')
          PsiElement(identifier)('item1')
          PsiWhiteSpace(' ')
          Arguments
            PsiElement(()('(')
            Reference expression
              PsiElement(identifier)('a')
            PsiElement(,)(',')
            PsiWhiteSpace(' ')
            Reference expression
              PsiElement(identifier)('b')
            PsiElement())(')')
          PsiWhiteSpace(' ')
          Enum constant initializer
            Type definition body
              PsiElement({)('{')
              PsiWhiteSpace('\n    ')
              Class definition
                Modifiers
                  PsiElement(def)('def')
                PsiWhiteSpace(' ')
                PsiElement(class)('class')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('a')
                Extends clause
                  <empty list>
                Implements clause
                  <empty list>
                PsiWhiteSpace(' ')
                Type definition body
                  PsiElement({)('{')
                  PsiElement(})('}')
              PsiElement(new line)('\n    ')
              Class initializer
                Modifiers
                  <empty list>
                Open block
                  PsiElement({)('{')
                  Assignment expression
                    Reference expression
                      PsiElement(identifier)('a')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    Literal
                      PsiElement(Integer)('2')
                  PsiElement(})('}')
              PsiElement(new line)('\n    ')
              Variable definitions
                Modifiers
                  PsiElement(native)('native')
                  PsiWhiteSpace(' ')
                  PsiElement(def)('def')
                PsiWhiteSpace(' ')
                Type element
                  Reference element
                    PsiElement(identifier)('String')
                PsiWhiteSpace(' ')
                Field
                  PsiElement(identifier)('a')
                  PsiWhiteSpace(' ')
                  PsiElement(=)('=')
                  PsiWhiteSpace(' ')
                  Assignment expression
                    Reference expression
                      PsiElement(identifier)('b')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    Literal
                      PsiElement(Integer)('4')
              PsiElement(new line)('\n     ')
              Method
                Modifiers
                  <empty list>
                Type element
                  Reference element
                    PsiElement(identifier)('Integer')
                PsiWhiteSpace(' ')
                PsiElement(identifier)('getInteger')
                PsiElement(()('(')
                Parameter list
                  <empty list>
                PsiElement())(')')
                Throw clause
                  <empty list>
                PsiWhiteSpace(' ')
                Open block
                  PsiElement({)('{')
                  PsiWhiteSpace('\n       ')
                  Assignment expression
                    Reference expression
                      PsiElement(identifier)('a')
                    PsiWhiteSpace(' ')
                    PsiElement(=)('=')
                    PsiWhiteSpace(' ')
                    Literal
                      PsiElement(Integer)('3')
                  PsiElement(new line)('\n     ')
                  PsiElement(})('}')
              PsiWhiteSpace(' ')
              PsiElement(new line)('\n  ')
              PsiElement(})('}')
      PsiElement(new line)('\n')
      PsiElement(})('}')