JetFile: IdeTemplates.jet
  NAMESPACE_HEADER
    <empty list>
  FUN
    PsiElement(fun)('fun')
    PsiWhiteSpace(' ')
    PsiElement(IDENTIFIER)('main')
    VALUE_PARAMETER_LIST
      PsiElement(LPAR)('(')
      VALUE_PARAMETER
        PsiElement(IDENTIFIER)('args')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        TYPE_REFERENCE
          USER_TYPE
            REFERENCE_EXPRESSION
              PsiElement(IDENTIFIER)('Array')
            TYPE_ARGUMENT_LIST
              PsiElement(LT)('<')
              TYPE_PROJECTION
                TYPE_REFERENCE
                  USER_TYPE
                    REFERENCE_EXPRESSION
                      PsiElement(IDENTIFIER)('String')
              PsiElement(GT)('>')
      PsiElement(RPAR)(')')
    PsiWhiteSpace(' ')
    BLOCK
      PsiElement(LBRACE)('{')
      PsiWhiteSpace('\n    ')
      IF
        PsiElement(if)('if')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        CONDITION
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('condition')
            PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        THEN
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n        ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('block')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace('\n    ')
            PsiElement(RBRACE)('}')
        PsiWhiteSpace(' ')
        PsiElement(else)('else')
        PsiWhiteSpace(' ')
        ELSE
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n        ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('block')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace('\n    ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FUN
        PsiElement(fun)('fun')
        PsiWhiteSpace(' ')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('name')
          PsiElement(IDE_TEMPLATE_END)('>#>')
        VALUE_PARAMETER_LIST
          PsiElement(LPAR)('(')
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('params')
            PsiElement(IDE_TEMPLATE_END)('>#>')
          PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(COLON)(':')
        PsiWhiteSpace(' ')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('returnType')
          PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace(' ')
        BLOCK
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n        ')
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('body')
            PsiElement(IDE_TEMPLATE_END)('>#>')
          PsiWhiteSpace('\n    ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      FOR
        PsiElement(for)('for')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        LOOP_PARAMETER
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('i')
            PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace(' ')
        PsiElement(in)('in')
        PsiWhiteSpace(' ')
        LOOP_RANGE
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('elements')
            PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        BODY
          BLOCK
            PsiElement(LBRACE)('{')
            PsiWhiteSpace('\n        ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('body')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace('\n    ')
            PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      WHEN
        PsiElement(when)('when')
        PsiWhiteSpace(' ')
        PsiElement(LPAR)('(')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('expression')
          PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiElement(RPAR)(')')
        PsiWhiteSpace(' ')
        PsiElement(LBRACE)('{')
        PsiWhiteSpace('\n        ')
        WHEN_ENTRY
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('condition')
            PsiElement(IDE_TEMPLATE_END)('>#>')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('value')
            PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace('\n        ')
        WHEN_ENTRY
          PsiElement(else)('else')
          PsiWhiteSpace(' ')
          PsiElement(ARROW)('->')
          PsiWhiteSpace(' ')
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('elseValue')
            PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace('\n    ')
        PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      PROPERTY
        PsiElement(var)('var')
        PsiWhiteSpace(' ')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('name')
          PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('value')
          PsiElement(IDE_TEMPLATE_END)('>#>')
      PsiWhiteSpace('\n\n    ')
      CLASS
        PsiElement(class)('class')
        PsiWhiteSpace(' ')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('name')
          PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace(' ')
        TYPE_PARAMETER_LIST
          <empty list>
        CLASS_BODY
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n        ')
          IDE_TEMPLATE_EXPRESSION
            PsiElement(IDE_TEMPLATE_START)('<#<')
            PsiElement(IDENTIFIER)('body')
            PsiElement(IDE_TEMPLATE_END)('>#>')
          PsiWhiteSpace('\n    ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n\n    ')
      CLASS
        PsiElement(class)('class')
        PsiWhiteSpace(' ')
        IDE_TEMPLATE_EXPRESSION
          PsiElement(IDE_TEMPLATE_START)('<#<')
          PsiElement(IDENTIFIER)('name')
          PsiElement(IDE_TEMPLATE_END)('>#>')
        PsiWhiteSpace(' ')
        TYPE_PARAMETER_LIST
          <empty list>
        CLASS_BODY
          PsiElement(LBRACE)('{')
          PsiWhiteSpace('\n        ')
          PROPERTY
            PsiElement(var)('var')
            PsiWhiteSpace(' ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('name')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace(' ')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('varType')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace('\n        ')
            PROPERTY_ACCESSOR
              PsiElement(get)('get')
              PsiElement(LPAR)('(')
              PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              BLOCK
                PsiElement(LBRACE)('{')
                PsiWhiteSpace('\n            ')
                IDE_TEMPLATE_EXPRESSION
                  PsiElement(IDE_TEMPLATE_START)('<#<')
                  PsiElement(IDENTIFIER)('body')
                  PsiElement(IDE_TEMPLATE_END)('>#>')
                PsiWhiteSpace('\n        ')
                PsiElement(RBRACE)('}')
            PsiWhiteSpace('\n        ')
            PROPERTY_ACCESSOR
              PsiElement(set)('set')
              PsiElement(LPAR)('(')
              VALUE_PARAMETER_LIST
                VALUE_PARAMETER
                  PsiElement(IDENTIFIER)('value')
              PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              BLOCK
                PsiElement(LBRACE)('{')
                PsiWhiteSpace('\n            ')
                IDE_TEMPLATE_EXPRESSION
                  PsiElement(IDE_TEMPLATE_START)('<#<')
                  PsiElement(IDENTIFIER)('body')
                  PsiElement(IDE_TEMPLATE_END)('>#>')
                PsiWhiteSpace('\n        ')
                PsiElement(RBRACE)('}')
          PsiWhiteSpace('\n\n        ')
          PROPERTY
            PsiElement(val)('val')
            PsiWhiteSpace(' ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('name')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace(' ')
            PsiElement(COLON)(':')
            PsiWhiteSpace(' ')
            IDE_TEMPLATE_EXPRESSION
              PsiElement(IDE_TEMPLATE_START)('<#<')
              PsiElement(IDENTIFIER)('valType')
              PsiElement(IDE_TEMPLATE_END)('>#>')
            PsiWhiteSpace('\n        ')
            PROPERTY_ACCESSOR
              PsiElement(get)('get')
              PsiElement(LPAR)('(')
              PsiElement(RPAR)(')')
              PsiWhiteSpace(' ')
              BLOCK
                PsiElement(LBRACE)('{')
                PsiWhiteSpace('\n            ')
                IDE_TEMPLATE_EXPRESSION
                  PsiElement(IDE_TEMPLATE_START)('<#<')
                  PsiElement(IDENTIFIER)('body')
                  PsiElement(IDE_TEMPLATE_END)('>#>')
                PsiWhiteSpace('\n        ')
                PsiElement(RBRACE)('}')
          PsiWhiteSpace('\n    ')
          PsiElement(RBRACE)('}')
      PsiWhiteSpace('\n')
      PsiElement(RBRACE)('}')