public class org.springframework.expression.spel.ast.Selection extends org.springframework.expression.spel.ast.SpelNodeImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.expression.spel.ast.Selection
  super_class: org.springframework.expression.spel.ast.SpelNodeImpl
{
  public static final int ALL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int FIRST;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int LAST;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private final int variant;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean nullSafe;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(boolean, int, int, int, org.springframework.expression.spel.ast.SpelNodeImpl);
    descriptor: (ZIIILorg/springframework/expression/spel/ast/SpelNodeImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.springframework.expression.spel.ast.Selection this
        start local 1 // boolean nullSafe
        start local 2 // int variant
        start local 3 // int startPos
        start local 4 // int endPos
        start local 5 // org.springframework.expression.spel.ast.SpelNodeImpl expression
         0: .line 73
            aload 0 /* this */
            iload 3 /* startPos */
            iload 4 /* endPos */
            iconst_1
            anewarray org.springframework.expression.spel.ast.SpelNodeImpl
            dup
            iconst_0
            aload 5 /* expression */
            aastore
            invokespecial org.springframework.expression.spel.ast.SpelNodeImpl.<init>:(II[Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
         1: .line 74
            aload 0 /* this */
            iload 1 /* nullSafe */
            putfield org.springframework.expression.spel.ast.Selection.nullSafe:Z
         2: .line 75
            aload 0 /* this */
            iload 2 /* variant */
            putfield org.springframework.expression.spel.ast.Selection.variant:I
         3: .line 76
            return
        end local 5 // org.springframework.expression.spel.ast.SpelNodeImpl expression
        end local 4 // int endPos
        end local 3 // int startPos
        end local 2 // int variant
        end local 1 // boolean nullSafe
        end local 0 // org.springframework.expression.spel.ast.Selection this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/springframework/expression/spel/ast/Selection;
            0    4     1    nullSafe  Z
            0    4     2     variant  I
            0    4     3    startPos  I
            0    4     4      endPos  I
            0    4     5  expression  Lorg/springframework/expression/spel/ast/SpelNodeImpl;
    MethodParameters:
            Name  Flags
      nullSafe    
      variant     
      startPos    
      endPos      
      expression  

  public org.springframework.expression.TypedValue getValueInternal(org.springframework.expression.spel.ExpressionState);
    descriptor: (Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.expression.spel.ast.Selection this
        start local 1 // org.springframework.expression.spel.ExpressionState state
         0: .line 81
            aload 0 /* this */
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ast.Selection.getValueRef:(Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/spel/ast/ValueRef;
            invokeinterface org.springframework.expression.spel.ast.ValueRef.getValue:()Lorg/springframework/expression/TypedValue;
            areturn
        end local 1 // org.springframework.expression.spel.ExpressionState state
        end local 0 // org.springframework.expression.spel.ast.Selection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/springframework/expression/spel/ast/Selection;
            0    1     1  state  Lorg/springframework/expression/spel/ExpressionState;
    Exceptions:
      throws org.springframework.expression.EvaluationException
    MethodParameters:
       Name  Flags
      state  

  protected org.springframework.expression.spel.ast.ValueRef getValueRef(org.springframework.expression.spel.ExpressionState);
    descriptor: (Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/spel/ast/ValueRef;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=14, args_size=2
        start local 0 // org.springframework.expression.spel.ast.Selection this
        start local 1 // org.springframework.expression.spel.ExpressionState state
         0: .line 86
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.getActiveContextObject:()Lorg/springframework/expression/TypedValue;
            astore 2 /* op */
        start local 2 // org.springframework.expression.TypedValue op
         1: .line 87
            aload 2 /* op */
            invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
            astore 3 /* operand */
        start local 3 // java.lang.Object operand
         2: .line 88
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.children:[Lorg/springframework/expression/spel/ast/SpelNodeImpl;
            iconst_0
            aaload
            astore 4 /* selectionCriteria */
        start local 4 // org.springframework.expression.spel.ast.SpelNodeImpl selectionCriteria
         3: .line 90
            aload 3 /* operand */
            instanceof java.util.Map
            ifeq 43
         4: .line 91
            aload 3 /* operand */
            checkcast java.util.Map
            astore 5 /* mapdata */
        start local 5 // java.util.Map mapdata
         5: .line 93
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 6 /* result */
        start local 6 // java.util.Map result
         6: .line 94
            aconst_null
            astore 7 /* lastKey */
        start local 7 // java.lang.Object lastKey
         7: .line 96
            aload 5 /* mapdata */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 33
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.util.Map java.util.Map java.lang.Object top java.util.Iterator
      StackMap stack:
         8: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 8 /* entry */
        start local 8 // java.util.Map$Entry entry
         9: .line 98
            new org.springframework.expression.TypedValue
            dup
            aload 8 /* entry */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            astore 10 /* kvPair */
        start local 10 // org.springframework.expression.TypedValue kvPair
        10: .line 99
            aload 1 /* state */
            aload 10 /* kvPair */
            invokevirtual org.springframework.expression.spel.ExpressionState.pushActiveContextObject:(Lorg/springframework/expression/TypedValue;)V
        11: .line 100
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.enterScope:()V
        12: .line 101
            aload 4 /* selectionCriteria */
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getValueInternal:(Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
            invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
            astore 11 /* val */
        start local 11 // java.lang.Object val
        13: .line 102
            aload 11 /* val */
            instanceof java.lang.Boolean
            ifeq 24
        14: .line 103
            aload 11 /* val */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 31
        15: .line 104
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_1
            if_icmpne 21
        16: .line 105
            aload 6 /* result */
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 106
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 6 /* result */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            astore 13
        18: .line 118
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.popActiveContextObject:()V
        19: .line 119
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.exitScope:()V
        20: .line 106
            aload 13
            areturn
        21: .line 108
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.util.Map java.util.Map java.lang.Object java.util.Map$Entry java.util.Iterator org.springframework.expression.TypedValue java.lang.Object
      StackMap stack:
            aload 6 /* result */
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 109
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            astore 7 /* lastKey */
        23: .line 111
            goto 31
        24: .line 113
      StackMap locals:
      StackMap stack:
            new org.springframework.expression.spel.SpelEvaluationException
            dup
            aload 4 /* selectionCriteria */
            invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getStartPosition:()I
        25: .line 114
            getstatic org.springframework.expression.spel.SpelMessage.RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN:Lorg/springframework/expression/spel/SpelMessage;
        26: .line 113
            iconst_0
            anewarray java.lang.Object
            invokespecial org.springframework.expression.spel.SpelEvaluationException.<init>:(ILorg/springframework/expression/spel/SpelMessage;[Ljava/lang/Object;)V
            athrow
        end local 11 // java.lang.Object val
        end local 10 // org.springframework.expression.TypedValue kvPair
        27: .line 117
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.util.Map java.util.Map java.lang.Object java.util.Map$Entry java.util.Iterator
      StackMap stack: java.lang.Throwable
            astore 12
        28: .line 118
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.popActiveContextObject:()V
        29: .line 119
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.exitScope:()V
        30: .line 120
            aload 12
            athrow
        31: .line 118
      StackMap locals:
      StackMap stack:
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.popActiveContextObject:()V
        32: .line 119
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.exitScope:()V
        end local 8 // java.util.Map$Entry entry
        33: .line 96
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.util.Map java.util.Map java.lang.Object top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        34: .line 123
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_1
            if_icmpeq 35
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_2
            if_icmpne 37
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.util.Map java.util.Map java.lang.Object
      StackMap stack:
        35: aload 6 /* result */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 37
        36: .line 124
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aconst_null
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            areturn
        37: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_2
            if_icmpne 42
        38: .line 128
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 8 /* resultMap */
        start local 8 // java.util.Map resultMap
        39: .line 129
            aload 6 /* result */
            aload 7 /* lastKey */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* lastValue */
        start local 9 // java.lang.Object lastValue
        40: .line 130
            aload 8 /* resultMap */
            aload 7 /* lastKey */
            aload 9 /* lastValue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        41: .line 131
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 8 /* resultMap */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            areturn
        end local 9 // java.lang.Object lastValue
        end local 8 // java.util.Map resultMap
        42: .line 134
      StackMap locals:
      StackMap stack:
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 6 /* result */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            areturn
        end local 7 // java.lang.Object lastKey
        end local 6 // java.util.Map result
        end local 5 // java.util.Map mapdata
        43: .line 137
      StackMap locals:
      StackMap stack:
            aload 3 /* operand */
            instanceof java.lang.Iterable
            ifne 44
            aload 3 /* operand */
            invokestatic org.springframework.util.ObjectUtils.isArray:(Ljava/lang/Object;)Z
            ifeq 95
        44: .line 138
      StackMap locals:
      StackMap stack:
            aload 3 /* operand */
            instanceof java.lang.Iterable
            ifeq 46
        45: .line 139
            aload 3 /* operand */
            checkcast java.lang.Iterable
            goto 47
      StackMap locals:
      StackMap stack:
        46: aload 3 /* operand */
            invokestatic org.springframework.util.ObjectUtils.toObjectArray:(Ljava/lang/Object;)[Ljava/lang/Object;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
        47: .line 138
      StackMap locals:
      StackMap stack: java.lang.Iterable
            astore 5 /* data */
        start local 5 // java.lang.Iterable data
        48: .line 141
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* result */
        start local 6 // java.util.List result
        49: .line 142
            iconst_0
            istore 7 /* index */
        start local 7 // int index
        50: .line 143
            aload 5 /* data */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 9
            goto 75
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.lang.Iterable java.util.List int top java.util.Iterator
      StackMap stack:
        51: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 8 /* element */
        start local 8 // java.lang.Object element
        52: .line 145
            aload 1 /* state */
            new org.springframework.expression.TypedValue
            dup
            aload 8 /* element */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            invokevirtual org.springframework.expression.spel.ExpressionState.pushActiveContextObject:(Lorg/springframework/expression/TypedValue;)V
        53: .line 146
            aload 1 /* state */
            ldc "index"
            iload 7 /* index */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.springframework.expression.spel.ExpressionState.enterScope:(Ljava/lang/String;Ljava/lang/Object;)V
        54: .line 147
            aload 4 /* selectionCriteria */
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getValueInternal:(Lorg/springframework/expression/spel/ExpressionState;)Lorg/springframework/expression/TypedValue;
            invokevirtual org.springframework.expression.TypedValue.getValue:()Ljava/lang/Object;
            astore 10 /* val */
        start local 10 // java.lang.Object val
        55: .line 148
            aload 10 /* val */
            instanceof java.lang.Boolean
            ifeq 64
        56: .line 149
            aload 10 /* val */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 67
        57: .line 150
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_1
            if_icmpne 62
        58: .line 151
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 8 /* element */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            astore 12
        59: .line 163
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.exitScope:()V
        60: .line 164
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.popActiveContextObject:()V
        61: .line 151
            aload 12
            areturn
        62: .line 153
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.lang.Iterable java.util.List int java.lang.Object java.util.Iterator java.lang.Object
      StackMap stack:
            aload 6 /* result */
            aload 8 /* element */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        63: .line 155
            goto 67
        64: .line 157
      StackMap locals:
      StackMap stack:
            new org.springframework.expression.spel.SpelEvaluationException
            dup
            aload 4 /* selectionCriteria */
            invokevirtual org.springframework.expression.spel.ast.SpelNodeImpl.getStartPosition:()I
        65: .line 158
            getstatic org.springframework.expression.spel.SpelMessage.RESULT_OF_SELECTION_CRITERIA_IS_NOT_BOOLEAN:Lorg/springframework/expression/spel/SpelMessage;
        66: .line 157
            iconst_0
            anewarray java.lang.Object
            invokespecial org.springframework.expression.spel.SpelEvaluationException.<init>:(ILorg/springframework/expression/spel/SpelMessage;[Ljava/lang/Object;)V
            athrow
        67: .line 160
      StackMap locals:
      StackMap stack:
            iinc 7 /* index */ 1
        end local 10 // java.lang.Object val
        68: .line 161
            goto 73
        69: .line 162
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.lang.Iterable java.util.List int java.lang.Object java.util.Iterator
      StackMap stack: java.lang.Throwable
            astore 11
        70: .line 163
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.exitScope:()V
        71: .line 164
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.popActiveContextObject:()V
        72: .line 165
            aload 11
            athrow
        73: .line 163
      StackMap locals:
      StackMap stack:
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.exitScope:()V
        74: .line 164
            aload 1 /* state */
            invokevirtual org.springframework.expression.spel.ExpressionState.popActiveContextObject:()V
        end local 8 // java.lang.Object element
        75: .line 143
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.lang.Iterable java.util.List int top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 51
        76: .line 168
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_1
            if_icmpeq 77
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_2
            if_icmpne 79
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl java.lang.Iterable java.util.List int
      StackMap stack:
        77: aload 6 /* result */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 79
        78: .line 169
            getstatic org.springframework.expression.spel.ast.ValueRef$NullValueRef.INSTANCE:Lorg/springframework/expression/spel/ast/ValueRef$NullValueRef;
            areturn
        79: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            iconst_2
            if_icmpne 81
        80: .line 173
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 6 /* result */
            invokestatic org.springframework.util.CollectionUtils.lastElement:(Ljava/util/List;)Ljava/lang/Object;
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            areturn
        81: .line 176
      StackMap locals:
      StackMap stack:
            aload 3 /* operand */
            instanceof java.lang.Iterable
            ifeq 83
        82: .line 177
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 6 /* result */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            areturn
        83: .line 180
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* elementType */
        start local 8 // java.lang.Class elementType
        84: .line 181
            aload 2 /* op */
            invokevirtual org.springframework.expression.TypedValue.getTypeDescriptor:()Lorg/springframework/core/convert/TypeDescriptor;
            astore 9 /* typeDesc */
        start local 9 // org.springframework.core.convert.TypeDescriptor typeDesc
        85: .line 182
            aload 9 /* typeDesc */
            ifnull 89
        86: .line 183
            aload 9 /* typeDesc */
            invokevirtual org.springframework.core.convert.TypeDescriptor.getElementTypeDescriptor:()Lorg/springframework/core/convert/TypeDescriptor;
            astore 10 /* elementTypeDesc */
        start local 10 // org.springframework.core.convert.TypeDescriptor elementTypeDesc
        87: .line 184
            aload 10 /* elementTypeDesc */
            ifnull 89
        88: .line 185
            aload 10 /* elementTypeDesc */
            invokevirtual org.springframework.core.convert.TypeDescriptor.getType:()Ljava/lang/Class;
            invokestatic org.springframework.util.ClassUtils.resolvePrimitiveIfNecessary:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 8 /* elementType */
        end local 10 // org.springframework.core.convert.TypeDescriptor elementTypeDesc
        89: .line 188
      StackMap locals: java.lang.Class org.springframework.core.convert.TypeDescriptor
      StackMap stack:
            aload 8 /* elementType */
            ifnull 90
            iconst_1
            goto 91
      StackMap locals:
      StackMap stack:
        90: iconst_0
      StackMap locals:
      StackMap stack: int
        91: ldc "Unresolvable element type"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
        92: .line 190
            aload 8 /* elementType */
            aload 6 /* result */
            invokeinterface java.util.List.size:()I
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            astore 10 /* resultArray */
        start local 10 // java.lang.Object resultArray
        93: .line 191
            aload 6 /* result */
            invokeinterface java.util.List.toArray:()[Ljava/lang/Object;
            iconst_0
            aload 10 /* resultArray */
            iconst_0
            aload 6 /* result */
            invokeinterface java.util.List.size:()I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        94: .line 192
            new org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef
            dup
            new org.springframework.expression.TypedValue
            dup
            aload 10 /* resultArray */
            invokespecial org.springframework.expression.TypedValue.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            invokespecial org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef.<init>:(Lorg/springframework/expression/TypedValue;Lorg/springframework/expression/spel/ast/SpelNodeImpl;)V
            areturn
        end local 10 // java.lang.Object resultArray
        end local 9 // org.springframework.core.convert.TypeDescriptor typeDesc
        end local 8 // java.lang.Class elementType
        end local 7 // int index
        end local 6 // java.util.List result
        end local 5 // java.lang.Iterable data
        95: .line 195
      StackMap locals: org.springframework.expression.spel.ast.Selection org.springframework.expression.spel.ExpressionState org.springframework.expression.TypedValue java.lang.Object org.springframework.expression.spel.ast.SpelNodeImpl
      StackMap stack:
            aload 3 /* operand */
            ifnonnull 99
        96: .line 196
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.nullSafe:Z
            ifeq 98
        97: .line 197
            getstatic org.springframework.expression.spel.ast.ValueRef$NullValueRef.INSTANCE:Lorg/springframework/expression/spel/ast/ValueRef$NullValueRef;
            areturn
        98: .line 199
      StackMap locals:
      StackMap stack:
            new org.springframework.expression.spel.SpelEvaluationException
            dup
            aload 0 /* this */
            invokevirtual org.springframework.expression.spel.ast.Selection.getStartPosition:()I
            getstatic org.springframework.expression.spel.SpelMessage.INVALID_TYPE_FOR_SELECTION:Lorg/springframework/expression/spel/SpelMessage;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "null"
            aastore
            invokespecial org.springframework.expression.spel.SpelEvaluationException.<init>:(ILorg/springframework/expression/spel/SpelMessage;[Ljava/lang/Object;)V
            athrow
        99: .line 202
      StackMap locals:
      StackMap stack:
            new org.springframework.expression.spel.SpelEvaluationException
            dup
            aload 0 /* this */
            invokevirtual org.springframework.expression.spel.ast.Selection.getStartPosition:()I
            getstatic org.springframework.expression.spel.SpelMessage.INVALID_TYPE_FOR_SELECTION:Lorg/springframework/expression/spel/SpelMessage;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
       100: .line 203
            aload 3 /* operand */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
       101: .line 202
            aastore
            invokespecial org.springframework.expression.spel.SpelEvaluationException.<init>:(ILorg/springframework/expression/spel/SpelMessage;[Ljava/lang/Object;)V
            athrow
        end local 4 // org.springframework.expression.spel.ast.SpelNodeImpl selectionCriteria
        end local 3 // java.lang.Object operand
        end local 2 // org.springframework.expression.TypedValue op
        end local 1 // org.springframework.expression.spel.ExpressionState state
        end local 0 // org.springframework.expression.spel.ast.Selection this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0  102     0               this  Lorg/springframework/expression/spel/ast/Selection;
            0  102     1              state  Lorg/springframework/expression/spel/ExpressionState;
            1  102     2                 op  Lorg/springframework/expression/TypedValue;
            2  102     3            operand  Ljava/lang/Object;
            3  102     4  selectionCriteria  Lorg/springframework/expression/spel/ast/SpelNodeImpl;
            5   43     5            mapdata  Ljava/util/Map<**>;
            6   43     6             result  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
            7   43     7            lastKey  Ljava/lang/Object;
            9   33     8              entry  Ljava/util/Map$Entry<**>;
           10   27    10             kvPair  Lorg/springframework/expression/TypedValue;
           13   27    11                val  Ljava/lang/Object;
           39   42     8          resultMap  Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
           40   42     9          lastValue  Ljava/lang/Object;
           48   95     5               data  Ljava/lang/Iterable<*>;
           49   95     6             result  Ljava/util/List<Ljava/lang/Object;>;
           50   95     7              index  I
           52   75     8            element  Ljava/lang/Object;
           55   68    10                val  Ljava/lang/Object;
           84   95     8        elementType  Ljava/lang/Class<*>;
           85   95     9           typeDesc  Lorg/springframework/core/convert/TypeDescriptor;
           87   89    10    elementTypeDesc  Lorg/springframework/core/convert/TypeDescriptor;
           93   95    10        resultArray  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           9    18      27  any
          21    27      27  any
          52    59      69  any
          62    69      69  any
    Exceptions:
      throws org.springframework.expression.EvaluationException
    MethodParameters:
       Name  Flags
      state  

  public java.lang.String toStringAST();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.expression.spel.ast.Selection this
         0: .line 208
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.springframework.expression.spel.ast.Selection.prefix:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            iconst_0
            invokevirtual org.springframework.expression.spel.ast.Selection.getChild:(I)Lorg/springframework/expression/spel/SpelNode;
            invokeinterface org.springframework.expression.spel.SpelNode.toStringAST:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.springframework.expression.spel.ast.Selection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/expression/spel/ast/Selection;

  private java.lang.String prefix();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.expression.spel.ast.Selection this
         0: .line 212
            aload 0 /* this */
            getfield org.springframework.expression.spel.ast.Selection.variant:I
            tableswitch { // 0 - 2
                    0: 1
                    1: 2
                    2: 3
              default: 4
          }
         1: .line 213
      StackMap locals:
      StackMap stack:
            ldc "?["
            areturn
         2: .line 214
      StackMap locals:
      StackMap stack:
            ldc "^["
            areturn
         3: .line 215
      StackMap locals:
      StackMap stack:
            ldc "$["
            areturn
         4: .line 217
      StackMap locals:
      StackMap stack:
            ldc ""
            areturn
        end local 0 // org.springframework.expression.spel.ast.Selection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/expression/spel/ast/Selection;
}
SourceFile: "Selection.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public NullValueRef = org.springframework.expression.spel.ast.ValueRef$NullValueRef of org.springframework.expression.spel.ast.ValueRef
  public TypedValueHolderValueRef = org.springframework.expression.spel.ast.ValueRef$TypedValueHolderValueRef of org.springframework.expression.spel.ast.ValueRef