class freemarker.core.BuiltInsForSequences$sortBI extends freemarker.core.BuiltInForSequence
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: freemarker.core.BuiltInsForSequences$sortBI
  super_class: freemarker.core.BuiltInForSequence
{
  static final int KEY_TYPE_NOT_YET_DETECTED;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  static final int KEY_TYPE_STRING;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int KEY_TYPE_NUMBER;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int KEY_TYPE_DATE;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  static final int KEY_TYPE_BOOLEAN;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // freemarker.core.BuiltInsForSequences$sortBI this
         0: .line 569
            aload 0 /* this */
            invokespecial freemarker.core.BuiltInForSequence.<init>:()V
            return
        end local 0 // freemarker.core.BuiltInsForSequences$sortBI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltInsForSequences$sortBI;

  static freemarker.template.TemplateModelException newInconsistentSortKeyTypeException(int, java.lang.String, java.lang.String, int, freemarker.template.TemplateModel);
    descriptor: (ILjava/lang/String;Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=7, args_size=5
        start local 0 // int keyNamesLn
        start local 1 // java.lang.String firstType
        start local 2 // java.lang.String firstTypePlural
        start local 3 // int index
        start local 4 // freemarker.template.TemplateModel key
         0: .line 638
            iload 0 /* keyNamesLn */
            ifne 4
         1: .line 639
            ldc "value"
            astore 5 /* valueInMsg */
        start local 5 // java.lang.String valueInMsg
         2: .line 640
            ldc "values"
            astore 6 /* valuesInMsg */
        start local 6 // java.lang.String valuesInMsg
         3: .line 641
            goto 6
        end local 6 // java.lang.String valuesInMsg
        end local 5 // java.lang.String valueInMsg
         4: .line 642
      StackMap locals:
      StackMap stack:
            ldc "key value"
            astore 5 /* valueInMsg */
        start local 5 // java.lang.String valueInMsg
         5: .line 643
            ldc "key values"
            astore 6 /* valuesInMsg */
        start local 6 // java.lang.String valuesInMsg
         6: .line 645
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            bipush 14
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 646
            iload 0 /* keyNamesLn */
            iload 3 /* index */
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.startErrorMessage:(II)[Ljava/lang/Object;
            aastore
            dup
            iconst_1
         8: .line 647
            ldc "All "
            aastore
            dup
            iconst_2
            aload 6 /* valuesInMsg */
            aastore
            dup
            iconst_3
            ldc " in the sequence must be "
            aastore
            dup
            iconst_4
         9: .line 648
            aload 2 /* firstTypePlural */
            aastore
            dup
            iconst_5
            ldc ", because the first "
            aastore
            dup
            bipush 6
            aload 5 /* valueInMsg */
            aastore
            dup
            bipush 7
        10: .line 649
            ldc " was that. However, the "
            aastore
            dup
            bipush 8
            aload 5 /* valueInMsg */
            aastore
            dup
            bipush 9
        11: .line 650
            ldc " of the current item isn't a "
            aastore
            dup
            bipush 10
            aload 1 /* firstType */
            aastore
            dup
            bipush 11
            ldc " but a "
            aastore
            dup
            bipush 12
        12: .line 651
            new freemarker.core._DelayedFTLTypeDescription
            dup
            aload 4 /* key */
            invokespecial freemarker.core._DelayedFTLTypeDescription.<init>:(Lfreemarker/template/TemplateModel;)V
            aastore
            dup
            bipush 13
            ldc "."
        13: .line 645
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            areturn
        end local 6 // java.lang.String valuesInMsg
        end local 5 // java.lang.String valueInMsg
        end local 4 // freemarker.template.TemplateModel key
        end local 3 // int index
        end local 2 // java.lang.String firstTypePlural
        end local 1 // java.lang.String firstType
        end local 0 // int keyNamesLn
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   14     0       keyNamesLn  I
            0   14     1        firstType  Ljava/lang/String;
            0   14     2  firstTypePlural  Ljava/lang/String;
            0   14     3            index  I
            0   14     4              key  Lfreemarker/template/TemplateModel;
            2    4     5       valueInMsg  Ljava/lang/String;
            5   14     5       valueInMsg  Ljava/lang/String;
            3    4     6      valuesInMsg  Ljava/lang/String;
            6   14     6      valuesInMsg  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      keyNamesLn       
      firstType        
      firstTypePlural  
      index            
      key              

  static freemarker.template.TemplateSequenceModel sort(freemarker.template.TemplateSequenceModel, java.lang.String[]);
    descriptor: (Lfreemarker/template/TemplateSequenceModel;[Ljava/lang/String;)Lfreemarker/template/TemplateSequenceModel;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=9, locals=12, args_size=2
        start local 0 // freemarker.template.TemplateSequenceModel seq
        start local 1 // java.lang.String[] keyNames
         0: .line 669
            aload 0 /* seq */
            invokeinterface freemarker.template.TemplateSequenceModel.size:()I
            istore 2 /* ln */
        start local 2 // int ln
         1: .line 670
            iload 2 /* ln */
            ifne 2
            aload 0 /* seq */
            areturn
         2: .line 672
      StackMap locals: int
      StackMap stack:
            new java.util.ArrayList
            dup
            iload 2 /* ln */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* res */
        start local 3 // java.util.ArrayList res
         3: .line 674
            aload 1 /* keyNames */
            ifnonnull 4
            iconst_0
            goto 5
      StackMap locals: java.util.ArrayList
      StackMap stack:
         4: aload 1 /* keyNames */
            arraylength
      StackMap locals:
      StackMap stack: int
         5: istore 4 /* keyNamesLn */
        start local 4 // int keyNamesLn
         6: .line 677
            iconst_0
            istore 5 /* keyType */
        start local 5 // int keyType
         7: .line 678
            aconst_null
            astore 6 /* keyComparator */
        start local 6 // java.util.Comparator keyComparator
         8: .line 679
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         9: goto 103
        10: .line 680
      StackMap locals: freemarker.template.TemplateSequenceModel java.lang.String[] int java.util.ArrayList int int java.util.Comparator int
      StackMap stack:
            aload 0 /* seq */
            iload 7 /* i */
            invokeinterface freemarker.template.TemplateSequenceModel.get:(I)Lfreemarker/template/TemplateModel;
            astore 8 /* item */
        start local 8 // freemarker.template.TemplateModel item
        11: .line 681
            aload 8 /* item */
            astore 9 /* key */
        start local 9 // freemarker.template.TemplateModel key
        12: .line 682
            iconst_0
            istore 10 /* keyNameI */
        start local 10 // int keyNameI
        13: goto 36
        14: .line 684
      StackMap locals: freemarker.template.TemplateModel freemarker.template.TemplateModel int
      StackMap stack:
            aload 9 /* key */
            checkcast freemarker.template.TemplateHashModel
            aload 1 /* keyNames */
            iload 10 /* keyNameI */
            aaload
            invokeinterface freemarker.template.TemplateHashModel.get:(Ljava/lang/String;)Lfreemarker/template/TemplateModel;
            astore 9 /* key */
        15: .line 685
            goto 30
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        16: astore 11 /* e */
        start local 11 // java.lang.ClassCastException e
        17: .line 686
            aload 9 /* key */
            instanceof freemarker.template.TemplateHashModel
            ifne 29
        18: .line 687
            new freemarker.core._TemplateModelException
            dup
            bipush 6
            anewarray java.lang.Object
            dup
            iconst_0
        19: .line 688
            iload 4 /* keyNamesLn */
            iload 7 /* i */
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.startErrorMessage:(II)[Ljava/lang/Object;
            aastore
            dup
            iconst_1
        20: .line 689
            iload 10 /* keyNameI */
            ifne 22
        21: .line 690
            ldc "Sequence items must be hashes when using ?sort_by. "
            goto 23
        22: .line 691
      StackMap locals: freemarker.template.TemplateSequenceModel java.lang.String[] int java.util.ArrayList int int java.util.Comparator int freemarker.template.TemplateModel freemarker.template.TemplateModel int java.lang.ClassCastException
      StackMap stack: new 18 new 18 java.lang.Object[] java.lang.Object[] int
            new java.lang.StringBuilder
            dup
            ldc "The "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* keyNames */
            iload 10 /* keyNameI */
            iconst_1
            isub
            aaload
            invokestatic freemarker.template.utility.StringUtil.jQuote:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
      StackMap locals: freemarker.template.TemplateSequenceModel java.lang.String[] int java.util.ArrayList int int java.util.Comparator int freemarker.template.TemplateModel freemarker.template.TemplateModel int java.lang.ClassCastException
      StackMap stack: new 18 new 18 java.lang.Object[] java.lang.Object[] int java.lang.String
        23: aastore
            dup
            iconst_2
        24: .line 692
            ldc " subvariable is not a hash, so ?sort_by "
            aastore
            dup
            iconst_3
        25: .line 693
            ldc "can't proceed with getting the "
            aastore
            dup
            iconst_4
        26: .line 694
            new freemarker.core._DelayedJQuote
            dup
            aload 1 /* keyNames */
            iload 10 /* keyNameI */
            aaload
            invokespecial freemarker.core._DelayedJQuote.<init>:(Ljava/lang/Object;)V
            aastore
            dup
            iconst_5
        27: .line 695
            ldc " subvariable."
        28: .line 687
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        29: .line 697
      StackMap locals:
      StackMap stack:
            aload 11 /* e */
            athrow
        end local 11 // java.lang.ClassCastException e
        30: .line 700
      StackMap locals:
      StackMap stack:
            aload 9 /* key */
            ifnonnull 35
        31: .line 701
            new freemarker.core._TemplateModelException
            dup
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        32: .line 702
            iload 4 /* keyNamesLn */
            iload 7 /* i */
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.startErrorMessage:(II)[Ljava/lang/Object;
            aastore
            dup
            iconst_1
        33: .line 703
            new java.lang.StringBuilder
            dup
            ldc "The "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* keyNames */
            iload 10 /* keyNameI */
            aaload
            invokestatic freemarker.template.utility.StringUtil.jQuote:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            ldc " subvariable was null or missing."
        34: .line 701
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        35: .line 682
      StackMap locals:
      StackMap stack:
            iinc 10 /* keyNameI */ 1
      StackMap locals:
      StackMap stack:
        36: iload 10 /* keyNameI */
            iload 4 /* keyNamesLn */
            if_icmplt 14
        end local 10 // int keyNameI
        37: .line 707
            iload 5 /* keyType */
            ifne 63
        38: .line 708
            aload 9 /* key */
            instanceof freemarker.template.TemplateScalarModel
            ifeq 44
        39: .line 709
            iconst_1
            istore 5 /* keyType */
        40: .line 710
            new freemarker.core.BuiltInsForSequences$sortBI$LexicalKVPComparator
            dup
        41: .line 711
            invokestatic freemarker.core.Environment.getCurrentEnvironment:()Lfreemarker/core/Environment;
            invokevirtual freemarker.core.Environment.getCollator:()Ljava/text/Collator;
        42: .line 710
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$LexicalKVPComparator.<init>:(Ljava/text/Collator;)V
            astore 6 /* keyComparator */
        43: .line 712
            goto 63
      StackMap locals:
      StackMap stack:
        44: aload 9 /* key */
            instanceof freemarker.template.TemplateNumberModel
            ifeq 51
        45: .line 713
            iconst_2
            istore 5 /* keyType */
        46: .line 714
            new freemarker.core.BuiltInsForSequences$sortBI$NumericalKVPComparator
            dup
        47: .line 715
            invokestatic freemarker.core.Environment.getCurrentEnvironment:()Lfreemarker/core/Environment;
        48: .line 716
            invokevirtual freemarker.core.Environment.getArithmeticEngine:()Lfreemarker/core/ArithmeticEngine;
        49: .line 714
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$NumericalKVPComparator.<init>:(Lfreemarker/core/ArithmeticEngine;)V
            astore 6 /* keyComparator */
        50: .line 717
            goto 63
      StackMap locals:
      StackMap stack:
        51: aload 9 /* key */
            instanceof freemarker.template.TemplateDateModel
            ifeq 55
        52: .line 718
            iconst_3
            istore 5 /* keyType */
        53: .line 719
            new freemarker.core.BuiltInsForSequences$sortBI$DateKVPComparator
            dup
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$DateKVPComparator.<init>:()V
            astore 6 /* keyComparator */
        54: .line 720
            goto 63
      StackMap locals:
      StackMap stack:
        55: aload 9 /* key */
            instanceof freemarker.template.TemplateBooleanModel
            ifeq 59
        56: .line 721
            iconst_4
            istore 5 /* keyType */
        57: .line 722
            new freemarker.core.BuiltInsForSequences$sortBI$BooleanKVPComparator
            dup
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$BooleanKVPComparator.<init>:()V
            astore 6 /* keyComparator */
        58: .line 723
            goto 63
        59: .line 724
      StackMap locals:
      StackMap stack:
            new freemarker.core._TemplateModelException
            dup
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        60: .line 725
            iload 4 /* keyNamesLn */
            iload 7 /* i */
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.startErrorMessage:(II)[Ljava/lang/Object;
            aastore
            dup
            iconst_1
        61: .line 726
            ldc "Values used for sorting must be numbers, strings, date/times or booleans."
        62: .line 724
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:([Ljava/lang/Object;)V
            athrow
        63: .line 729
      StackMap locals:
      StackMap stack:
            iload 5 /* keyType */
            tableswitch { // 1 - 4
                    1: 64
                    2: 74
                    3: 83
                    4: 92
              default: 101
          }
        64: .line 732
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            new freemarker.core.BuiltInsForSequences$sortBI$KVP
            dup
        65: .line 733
            aload 9 /* key */
            checkcast freemarker.template.TemplateScalarModel
            invokeinterface freemarker.template.TemplateScalarModel.getAsString:()Ljava/lang/String;
        66: .line 734
            aload 8 /* item */
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$KVP.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
        67: .line 732
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        68: .line 735
            goto 102
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        69: astore 10 /* e */
        start local 10 // java.lang.ClassCastException e
        70: .line 736
            aload 9 /* key */
            instanceof freemarker.template.TemplateScalarModel
            ifne 73
        71: .line 738
            iload 4 /* keyNamesLn */
            ldc "string"
            ldc "strings"
            iload 7 /* i */
            aload 9 /* key */
        72: .line 737
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.newInconsistentSortKeyTypeException:(ILjava/lang/String;Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
            athrow
        73: .line 740
      StackMap locals: java.lang.ClassCastException
      StackMap stack:
            aload 10 /* e */
            athrow
        end local 10 // java.lang.ClassCastException e
        74: .line 747
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            new freemarker.core.BuiltInsForSequences$sortBI$KVP
            dup
        75: .line 748
            aload 9 /* key */
            checkcast freemarker.template.TemplateNumberModel
            invokeinterface freemarker.template.TemplateNumberModel.getAsNumber:()Ljava/lang/Number;
        76: .line 749
            aload 8 /* item */
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$KVP.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
        77: .line 747
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        78: .line 750
            goto 102
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        79: pop
        80: .line 751
            aload 9 /* key */
            instanceof freemarker.template.TemplateNumberModel
            ifne 102
        81: .line 753
            iload 4 /* keyNamesLn */
            ldc "number"
            ldc "numbers"
            iload 7 /* i */
            aload 9 /* key */
        82: .line 752
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.newInconsistentSortKeyTypeException:(ILjava/lang/String;Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
            athrow
        83: .line 760
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            new freemarker.core.BuiltInsForSequences$sortBI$KVP
            dup
        84: .line 761
            aload 9 /* key */
            checkcast freemarker.template.TemplateDateModel
            invokeinterface freemarker.template.TemplateDateModel.getAsDate:()Ljava/util/Date;
        85: .line 762
            aload 8 /* item */
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$KVP.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
        86: .line 760
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        87: .line 763
            goto 102
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        88: pop
        89: .line 764
            aload 9 /* key */
            instanceof freemarker.template.TemplateDateModel
            ifne 102
        90: .line 766
            iload 4 /* keyNamesLn */
            ldc "date/time"
            ldc "date/times"
            iload 7 /* i */
            aload 9 /* key */
        91: .line 765
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.newInconsistentSortKeyTypeException:(ILjava/lang/String;Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
            athrow
        92: .line 773
      StackMap locals:
      StackMap stack:
            aload 3 /* res */
            new freemarker.core.BuiltInsForSequences$sortBI$KVP
            dup
        93: .line 774
            aload 9 /* key */
            checkcast freemarker.template.TemplateBooleanModel
            invokeinterface freemarker.template.TemplateBooleanModel.getAsBoolean:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
        94: .line 775
            aload 8 /* item */
            invokespecial freemarker.core.BuiltInsForSequences$sortBI$KVP.<init>:(Ljava/lang/Object;Ljava/lang/Object;)V
        95: .line 773
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        96: .line 776
            goto 102
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        97: pop
        98: .line 777
            aload 9 /* key */
            instanceof freemarker.template.TemplateBooleanModel
            ifne 102
        99: .line 779
            iload 4 /* keyNamesLn */
            ldc "boolean"
            ldc "booleans"
            iload 7 /* i */
            aload 9 /* key */
       100: .line 778
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.newInconsistentSortKeyTypeException:(ILjava/lang/String;Ljava/lang/String;ILfreemarker/template/TemplateModel;)Lfreemarker/template/TemplateModelException;
            athrow
       101: .line 785
      StackMap locals:
      StackMap stack:
            new freemarker.core.BugException
            dup
            ldc "Unexpected key type"
            invokespecial freemarker.core.BugException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // freemarker.template.TemplateModel key
        end local 8 // freemarker.template.TemplateModel item
       102: .line 679
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
       103: iload 7 /* i */
            iload 2 /* ln */
            if_icmplt 10
        end local 7 // int i
       104: .line 791
            aload 3 /* res */
            aload 6 /* keyComparator */
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
       105: .line 792
            goto 110
      StackMap locals: freemarker.template.TemplateSequenceModel java.lang.String[] int java.util.ArrayList int int java.util.Comparator
      StackMap stack: java.lang.Exception
       106: astore 7 /* exc */
        start local 7 // java.lang.Exception exc
       107: .line 793
            new freemarker.core._TemplateModelException
            dup
            aload 7 /* exc */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
       108: .line 794
            iload 4 /* keyNamesLn */
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.startErrorMessage:(I)[Ljava/lang/Object;
            aastore
            dup
            iconst_1
            new java.lang.StringBuilder
            dup
            ldc "Unexpected error while sorting:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* exc */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       109: .line 793
            aastore
            invokespecial freemarker.core._TemplateModelException.<init>:(Ljava/lang/Throwable;[Ljava/lang/Object;)V
            athrow
        end local 7 // java.lang.Exception exc
       110: .line 798
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
        start local 7 // int i
       111: goto 114
       112: .line 799
      StackMap locals: int
      StackMap stack:
            aload 3 /* res */
            iload 7 /* i */
            aload 3 /* res */
            iload 7 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast freemarker.core.BuiltInsForSequences$sortBI$KVP
            getfield freemarker.core.BuiltInsForSequences$sortBI$KVP.value:Ljava/lang/Object;
            invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
       113: .line 798
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
       114: iload 7 /* i */
            iload 2 /* ln */
            if_icmplt 112
        end local 7 // int i
       115: .line 802
            new freemarker.template.TemplateModelListSequence
            dup
            aload 3 /* res */
            invokespecial freemarker.template.TemplateModelListSequence.<init>:(Ljava/util/List;)V
            areturn
        end local 6 // java.util.Comparator keyComparator
        end local 5 // int keyType
        end local 4 // int keyNamesLn
        end local 3 // java.util.ArrayList res
        end local 2 // int ln
        end local 1 // java.lang.String[] keyNames
        end local 0 // freemarker.template.TemplateSequenceModel seq
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0  116     0            seq  Lfreemarker/template/TemplateSequenceModel;
            0  116     1       keyNames  [Ljava/lang/String;
            1  116     2             ln  I
            3  116     3            res  Ljava/util/ArrayList;
            6  116     4     keyNamesLn  I
            7  116     5        keyType  I
            8  116     6  keyComparator  Ljava/util/Comparator;
            9  104     7              i  I
           11  102     8           item  Lfreemarker/template/TemplateModel;
           12  102     9            key  Lfreemarker/template/TemplateModel;
           13   37    10       keyNameI  I
           17   30    11              e  Ljava/lang/ClassCastException;
           70   74    10              e  Ljava/lang/ClassCastException;
          107  110     7            exc  Ljava/lang/Exception;
          111  115     7              i  I
      Exception table:
        from    to  target  type
          14    15      16  Class java.lang.ClassCastException
          64    68      69  Class java.lang.ClassCastException
          74    78      79  Class java.lang.ClassCastException
          83    87      88  Class java.lang.ClassCastException
          92    96      97  Class java.lang.ClassCastException
         104   105     106  Class java.lang.Exception
    Exceptions:
      throws freemarker.template.TemplateModelException
    MethodParameters:
          Name  Flags
      seq       
      keyNames  

  static java.lang.Object[] startErrorMessage(int);
    descriptor: (I)[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // int keyNamesLn
         0: .line 806
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            iload 0 /* keyNamesLn */
            ifne 1
            ldc "?sort"
            goto 2
      StackMap locals: int
      StackMap stack: java.lang.Object[] java.lang.Object[] int
         1: ldc "?sort_by(...)"
      StackMap locals: int
      StackMap stack: java.lang.Object[] java.lang.Object[] int java.lang.String
         2: aastore
            dup
            iconst_1
            ldc " failed: "
            aastore
            areturn
        end local 0 // int keyNamesLn
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  keyNamesLn  I
    MethodParameters:
            Name  Flags
      keyNamesLn  

  static java.lang.Object[] startErrorMessage(int, int);
    descriptor: (II)[Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int keyNamesLn
        start local 1 // int index
         0: .line 810
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 811
            iload 0 /* keyNamesLn */
            ifne 2
            ldc "?sort"
            goto 3
      StackMap locals: int int
      StackMap stack: java.lang.Object[] java.lang.Object[] int
         2: ldc "?sort_by(...)"
      StackMap locals: int int
      StackMap stack: java.lang.Object[] java.lang.Object[] int java.lang.String
         3: aastore
            dup
            iconst_1
         4: .line 812
            ldc " failed at sequence index "
            aastore
            dup
            iconst_2
            iload 1 /* index */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
         5: .line 813
            iload 1 /* index */
            ifne 6
            ldc ": "
            goto 7
      StackMap locals: int int
      StackMap stack: java.lang.Object[] java.lang.Object[] int
         6: ldc " (0-based): "
      StackMap locals: int int
      StackMap stack: java.lang.Object[] java.lang.Object[] int java.lang.String
         7: aastore
         8: .line 810
            areturn
        end local 1 // int index
        end local 0 // int keyNamesLn
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0  keyNamesLn  I
            0    9     1       index  I
    MethodParameters:
            Name  Flags
      keyNamesLn  
      index       

  freemarker.template.TemplateModel calculateResult(freemarker.template.TemplateSequenceModel);
    descriptor: (Lfreemarker/template/TemplateSequenceModel;)Lfreemarker/template/TemplateModel;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // freemarker.core.BuiltInsForSequences$sortBI this
        start local 1 // freemarker.template.TemplateSequenceModel seq
         0: .line 829
            aload 1 /* seq */
            aconst_null
            invokestatic freemarker.core.BuiltInsForSequences$sortBI.sort:(Lfreemarker/template/TemplateSequenceModel;[Ljava/lang/String;)Lfreemarker/template/TemplateSequenceModel;
            areturn
        end local 1 // freemarker.template.TemplateSequenceModel seq
        end local 0 // freemarker.core.BuiltInsForSequences$sortBI this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lfreemarker/core/BuiltInsForSequences$sortBI;
            0    1     1   seq  Lfreemarker/template/TemplateSequenceModel;
    Exceptions:
      throws freemarker.template.TemplateModelException
    MethodParameters:
      Name  Flags
      seq   
}
SourceFile: "BuiltInsForSequences.java"
NestHost: freemarker.core.BuiltInsForSequences
InnerClasses:
  sortBI = freemarker.core.BuiltInsForSequences$sortBI of freemarker.core.BuiltInsForSequences
  private BooleanKVPComparator = freemarker.core.BuiltInsForSequences$sortBI$BooleanKVPComparator of freemarker.core.BuiltInsForSequences$sortBI
  private DateKVPComparator = freemarker.core.BuiltInsForSequences$sortBI$DateKVPComparator of freemarker.core.BuiltInsForSequences$sortBI
  private KVP = freemarker.core.BuiltInsForSequences$sortBI$KVP of freemarker.core.BuiltInsForSequences$sortBI
  private LexicalKVPComparator = freemarker.core.BuiltInsForSequences$sortBI$LexicalKVPComparator of freemarker.core.BuiltInsForSequences$sortBI
  private NumericalKVPComparator = freemarker.core.BuiltInsForSequences$sortBI$NumericalKVPComparator of freemarker.core.BuiltInsForSequences$sortBI