switch(age){
case 16..20 : insuranceRate = 0.05 ; break
default: throw new IllegalArgumentException()
}
-----
Groovy script
  Switch statement
    PsiElement(switch)('switch')
    PsiElement(()('(')
    Reference expression
      PsiElement(identifier)('age')
    PsiElement())(')')
    PsiElement({)('{')
    PsiWhiteSpace('\n')
    Case section
      Case label
        PsiElement(case)('case')
        PsiWhiteSpace(' ')
        Range expression
          Literal
            PsiElement(Integer)('16')
          PsiElement(..)('..')
          Literal
            PsiElement(Integer)('20')
        PsiWhiteSpace(' ')
        PsiElement(:)(':')
      PsiWhiteSpace(' ')
      Assignment expression
        Reference expression
          PsiElement(identifier)('insuranceRate')
        PsiWhiteSpace(' ')
        PsiElement(=)('=')
        PsiWhiteSpace(' ')
        Literal
          PsiElement(BigDecimal)('0.05')
      PsiWhiteSpace(' ')
      PsiElement(;)(';')
      PsiWhiteSpace(' ')
      BREAK statement
        PsiElement(break)('break')
    PsiElement(new line)('\n')
    Case section
      Case label
        PsiElement(default)('default')
        PsiElement(:)(':')
      PsiWhiteSpace(' ')
      THROW statement
        PsiElement(throw)('throw')
        PsiWhiteSpace(' ')
        NEW expression
          PsiElement(new)('new')
          PsiWhiteSpace(' ')
          Reference element
            PsiElement(identifier)('IllegalArgumentException')
          Arguments
            PsiElement(()('(')
            PsiElement())(')')
    PsiElement(new line)('\n')
    PsiElement(})('}')