public interface java.util.Comparator<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: java.util.Comparator
  super_class: java.lang.Object
{
  public abstract int compare(T, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TT;TT;)I
    MethodParameters:
      Name  Flags
      o1    
      o2    

  public abstract boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      obj   

  public java.util.Comparator<T> reversed();
    descriptor: ()Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.Comparator this
         0: .line 185
            aload 0 /* this */
            invokestatic java.util.Collections.reverseOrder:(Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/Comparator<TT;>;
    Signature: ()Ljava/util/Comparator<TT;>;

  public java.util.Comparator<T> thenComparing(java.util.Comparator<? super T>);
    descriptor: (Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.Comparator this
        start local 1 // java.util.Comparator other
         0: .line 214
            aload 1 /* other */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 215
            aload 0 /* this */
            aload 1 /* other */
            invokedynamic compare(Ljava/util/Comparator;Ljava/util/Comparator;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$0(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I (7 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
        end local 1 // java.util.Comparator other
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Ljava/util/Comparator<TT;>;
            0    2     1  other  Ljava/util/Comparator<-TT;>;
    Signature: (Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
       Name  Flags
      other  

  public <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T, ? extends U>, java.util.Comparator<? super U>);
    descriptor: (Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.util.Comparator this
        start local 1 // java.util.function.Function keyExtractor
        start local 2 // java.util.Comparator keyComparator
         0: .line 242
            aload 0 /* this */
            aload 1 /* keyExtractor */
            aload 2 /* keyComparator */
            invokestatic java.util.Comparator.comparing:(Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
            invokeinterface java.util.Comparator.thenComparing:(Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 2 // java.util.Comparator keyComparator
        end local 1 // java.util.function.Function keyExtractor
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Ljava/util/Comparator<TT;>;
            0    1     1   keyExtractor  Ljava/util/function/Function<-TT;+TU;>;
            0    1     2  keyComparator  Ljava/util/Comparator<-TU;>;
    Signature: <U:Ljava/lang/Object;>(Ljava/util/function/Function<-TT;+TU;>;Ljava/util/Comparator<-TU;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
               Name  Flags
      keyExtractor   
      keyComparator  

  public <U extends java.lang.Comparable<? super U>> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T, ? extends U>);
    descriptor: (Ljava/util/function/Function;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.Comparator this
        start local 1 // java.util.function.Function keyExtractor
         0: .line 265
            aload 0 /* this */
            aload 1 /* keyExtractor */
            invokestatic java.util.Comparator.comparing:(Ljava/util/function/Function;)Ljava/util/Comparator;
            invokeinterface java.util.Comparator.thenComparing:(Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 1 // java.util.function.Function keyExtractor
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljava/util/Comparator<TT;>;
            0    1     1  keyExtractor  Ljava/util/function/Function<-TT;+TU;>;
    Signature: <U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public java.util.Comparator<T> thenComparingInt(java.util.function.ToIntFunction<? super T>);
    descriptor: (Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.Comparator this
        start local 1 // java.util.function.ToIntFunction keyExtractor
         0: .line 284
            aload 0 /* this */
            aload 1 /* keyExtractor */
            invokestatic java.util.Comparator.comparingInt:(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
            invokeinterface java.util.Comparator.thenComparing:(Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 1 // java.util.function.ToIntFunction keyExtractor
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljava/util/Comparator<TT;>;
            0    1     1  keyExtractor  Ljava/util/function/ToIntFunction<-TT;>;
    Signature: (Ljava/util/function/ToIntFunction<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public java.util.Comparator<T> thenComparingLong(java.util.function.ToLongFunction<? super T>);
    descriptor: (Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.Comparator this
        start local 1 // java.util.function.ToLongFunction keyExtractor
         0: .line 303
            aload 0 /* this */
            aload 1 /* keyExtractor */
            invokestatic java.util.Comparator.comparingLong:(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
            invokeinterface java.util.Comparator.thenComparing:(Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 1 // java.util.function.ToLongFunction keyExtractor
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljava/util/Comparator<TT;>;
            0    1     1  keyExtractor  Ljava/util/function/ToLongFunction<-TT;>;
    Signature: (Ljava/util/function/ToLongFunction<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public java.util.Comparator<T> thenComparingDouble(java.util.function.ToDoubleFunction<? super T>);
    descriptor: (Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.Comparator this
        start local 1 // java.util.function.ToDoubleFunction keyExtractor
         0: .line 322
            aload 0 /* this */
            aload 1 /* keyExtractor */
            invokestatic java.util.Comparator.comparingDouble:(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
            invokeinterface java.util.Comparator.thenComparing:(Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 1 // java.util.function.ToDoubleFunction keyExtractor
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Ljava/util/Comparator<TT;>;
            0    1     1  keyExtractor  Ljava/util/function/ToDoubleFunction<-TT;>;
    Signature: (Ljava/util/function/ToDoubleFunction<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> reverseOrder();
    descriptor: ()Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 339
            invokestatic java.util.Collections.reverseOrder:()Ljava/util/Comparator;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T::Ljava/lang/Comparable<-TT;>;>()Ljava/util/Comparator<TT;>;

  public static <T extends java.lang.Comparable<? super T>> java.util.Comparator<T> naturalOrder();
    descriptor: ()Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 357
            getstatic java.util.Comparators$NaturalOrderComparator.INSTANCE:Ljava/util/Comparators$NaturalOrderComparator;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: <T::Ljava/lang/Comparable<-TT;>;>()Ljava/util/Comparator<TT;>;

  public static <T> java.util.Comparator<T> nullsFirst(java.util.Comparator<? super T>);
    descriptor: (Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.util.Comparator comparator
         0: .line 378
            new java.util.Comparators$NullComparator
            dup
            iconst_1
            aload 0 /* comparator */
            invokespecial java.util.Comparators$NullComparator.<init>:(ZLjava/util/Comparator;)V
            areturn
        end local 0 // java.util.Comparator comparator
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  comparator  Ljava/util/Comparator<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
            Name  Flags
      comparator  

  public static <T> java.util.Comparator<T> nullsLast(java.util.Comparator<? super T>);
    descriptor: (Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.util.Comparator comparator
         0: .line 399
            new java.util.Comparators$NullComparator
            dup
            iconst_0
            aload 0 /* comparator */
            invokespecial java.util.Comparators$NullComparator.<init>:(ZLjava/util/Comparator;)V
            areturn
        end local 0 // java.util.Comparator comparator
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  comparator  Ljava/util/Comparator<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
            Name  Flags
      comparator  

  public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T, ? extends U>, java.util.Comparator<? super U>);
    descriptor: (Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.function.Function keyExtractor
        start local 1 // java.util.Comparator keyComparator
         0: .line 433
            aload 0 /* keyExtractor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 434
            aload 1 /* keyComparator */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 436
            aload 1 /* keyComparator */
            aload 0 /* keyExtractor */
            invokedynamic compare(Ljava/util/Comparator;Ljava/util/function/Function;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$1(Ljava/util/Comparator;Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
         3: .line 435
            areturn
        end local 1 // java.util.Comparator keyComparator
        end local 0 // java.util.function.Function keyExtractor
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0   keyExtractor  Ljava/util/function/Function<-TT;+TU;>;
            0    4     1  keyComparator  Ljava/util/Comparator<-TU;>;
    Signature: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(Ljava/util/function/Function<-TT;+TU;>;Ljava/util/Comparator<-TU;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
               Name  Flags
      keyExtractor   
      keyComparator  

  public static <T, U extends java.lang.Comparable<? super U>> java.util.Comparator<T> comparing(java.util.function.Function<? super T, ? extends U>);
    descriptor: (Ljava/util/function/Function;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.function.Function keyExtractor
         0: .line 467
            aload 0 /* keyExtractor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 469
            aload 0 /* keyExtractor */
            invokedynamic compare(Ljava/util/function/Function;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$2(Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
         2: .line 468
            areturn
        end local 0 // java.util.function.Function keyExtractor
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  keyExtractor  Ljava/util/function/Function<-TT;+TU;>;
    Signature: <T:Ljava/lang/Object;U::Ljava/lang/Comparable<-TU;>;>(Ljava/util/function/Function<-TT;+TU;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public static <T> java.util.Comparator<T> comparingInt(java.util.function.ToIntFunction<? super T>);
    descriptor: (Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.function.ToIntFunction keyExtractor
         0: .line 488
            aload 0 /* keyExtractor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 490
            aload 0 /* keyExtractor */
            invokedynamic compare(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$3(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
         2: .line 489
            areturn
        end local 0 // java.util.function.ToIntFunction keyExtractor
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  keyExtractor  Ljava/util/function/ToIntFunction<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/function/ToIntFunction<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public static <T> java.util.Comparator<T> comparingLong(java.util.function.ToLongFunction<? super T>);
    descriptor: (Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.function.ToLongFunction keyExtractor
         0: .line 509
            aload 0 /* keyExtractor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 511
            aload 0 /* keyExtractor */
            invokedynamic compare(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$4(Ljava/util/function/ToLongFunction;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
         2: .line 510
            areturn
        end local 0 // java.util.function.ToLongFunction keyExtractor
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  keyExtractor  Ljava/util/function/ToLongFunction<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/function/ToLongFunction<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  public static <T> java.util.Comparator<T> comparingDouble(java.util.function.ToDoubleFunction<? super T>);
    descriptor: (Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.function.ToDoubleFunction keyExtractor
         0: .line 530
            aload 0 /* keyExtractor */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 532
            aload 0 /* keyExtractor */
            invokedynamic compare(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$5(Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
         2: .line 531
            areturn
        end local 0 // java.util.function.ToDoubleFunction keyExtractor
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  keyExtractor  Ljava/util/function/ToDoubleFunction<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/function/ToDoubleFunction<-TT;>;)Ljava/util/Comparator<TT;>;
    MethodParameters:
              Name  Flags
      keyExtractor  

  private int lambda$0(java.util.Comparator, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // java.util.Comparator this
        start local 2 // java.lang.Object c1
        start local 3 // java.lang.Object c2
         0: .line 216
            aload 0 /* this */
            aload 2 /* c1 */
            aload 3 /* c2 */
            invokeinterface java.util.Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
            istore 4 /* res */
        start local 4 // int res
         1: .line 217
            iload 4 /* res */
            ifeq 2
            iload 4 /* res */
            goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 1
            aload 2 /* c1 */
            aload 3 /* c2 */
            invokeinterface java.util.Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 4 // int res
        end local 3 // java.lang.Object c2
        end local 2 // java.lang.Object c1
        end local 0 // java.util.Comparator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/Comparator<TT;>;
            0    4     2    c1  TT;
            0    4     3    c2  TT;
            1    4     4   res  I

  private static int lambda$1(java.util.Comparator, java.util.function.Function, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/util/Comparator;Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
        start local 2 // java.lang.Object c1
        start local 3 // java.lang.Object c2
         0: .line 436
            aload 0
            aload 1
            aload 2 /* c1 */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
         1: .line 437
            aload 1
            aload 3 /* c2 */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
         2: .line 436
            invokeinterface java.util.Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
         3: .line 437
            ireturn
        end local 3 // java.lang.Object c2
        end local 2 // java.lang.Object c1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     2    c1  TT;
            0    4     3    c2  TT;

  private static int lambda$2(java.util.function.Function, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 1 // java.lang.Object c1
        start local 2 // java.lang.Object c2
         0: .line 469
            aload 0
            aload 1 /* c1 */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Comparable
            aload 0
            aload 2 /* c2 */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface java.lang.Comparable.compareTo:(Ljava/lang/Object;)I
            ireturn
        end local 2 // java.lang.Object c2
        end local 1 // java.lang.Object c1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    c1  TT;
            0    1     2    c2  TT;

  private static int lambda$3(java.util.function.ToIntFunction, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 1 // java.lang.Object c1
        start local 2 // java.lang.Object c2
         0: .line 490
            aload 0
            aload 1 /* c1 */
            invokeinterface java.util.function.ToIntFunction.applyAsInt:(Ljava/lang/Object;)I
            aload 0
            aload 2 /* c2 */
            invokeinterface java.util.function.ToIntFunction.applyAsInt:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.compare:(II)I
            ireturn
        end local 2 // java.lang.Object c2
        end local 1 // java.lang.Object c1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    c1  TT;
            0    1     2    c2  TT;

  private static int lambda$4(java.util.function.ToLongFunction, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/util/function/ToLongFunction;Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 1 // java.lang.Object c1
        start local 2 // java.lang.Object c2
         0: .line 511
            aload 0
            aload 1 /* c1 */
            invokeinterface java.util.function.ToLongFunction.applyAsLong:(Ljava/lang/Object;)J
            aload 0
            aload 2 /* c2 */
            invokeinterface java.util.function.ToLongFunction.applyAsLong:(Ljava/lang/Object;)J
            invokestatic java.lang.Long.compare:(JJ)I
            ireturn
        end local 2 // java.lang.Object c2
        end local 1 // java.lang.Object c1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    c1  TT;
            0    1     2    c2  TT;

  private static int lambda$5(java.util.function.ToDoubleFunction, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;Ljava/lang/Object;)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 1 // java.lang.Object c1
        start local 2 // java.lang.Object c2
         0: .line 532
            aload 0
            aload 1 /* c1 */
            invokeinterface java.util.function.ToDoubleFunction.applyAsDouble:(Ljava/lang/Object;)D
            aload 0
            aload 2 /* c2 */
            invokeinterface java.util.function.ToDoubleFunction.applyAsDouble:(Ljava/lang/Object;)D
            invokestatic java.lang.Double.compare:(DD)I
            ireturn
        end local 2 // java.lang.Object c2
        end local 1 // java.lang.Object c1
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1    c1  TT;
            0    1     2    c2  TT;

  private static java.lang.Object $deserializeLambda$(java.lang.invoke.SerializedLambda);
    descriptor: (Ljava/lang/invoke/SerializedLambda;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=11, locals=3, args_size=1
         0: .line 1
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodName:()Ljava/lang/String;
            astore 1
            iconst_m1
            istore 2
            aload 1
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 6
          -1647345005: 1
          -1647345004: 2
          -1647345003: 3
          -1647345002: 4
          -1647345001: 5
          -1647345000: 6
              default: 7
          }
      StackMap locals: java.lang.String int
      StackMap stack:
         1: aload 1
            ldc "lambda$0"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_0
            istore 2
            goto 7
      StackMap locals:
      StackMap stack:
         2: aload 1
            ldc "lambda$1"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_1
            istore 2
            goto 7
      StackMap locals:
      StackMap stack:
         3: aload 1
            ldc "lambda$2"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_2
            istore 2
            goto 7
      StackMap locals:
      StackMap stack:
         4: aload 1
            ldc "lambda$3"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_3
            istore 2
            goto 7
      StackMap locals:
      StackMap stack:
         5: aload 1
            ldc "lambda$4"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_4
            istore 2
            goto 7
      StackMap locals:
      StackMap stack:
         6: aload 1
            ldc "lambda$5"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_5
            istore 2
      StackMap locals:
      StackMap stack:
         7: iload 2
            lookupswitch { // 6
                    0: 8
                    1: 9
                    2: 10
                    3: 11
                    4: 12
                    5: 13
              default: 14
          }
      StackMap locals:
      StackMap stack:
         8: aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodKind:()I
            bipush 7
            if_icmpne 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
            ldc "compare"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            iconst_0
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.Comparator
            aload 0
            iconst_1
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.Comparator
            invokedynamic compare(Ljava/util/Comparator;Ljava/util/Comparator;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$0(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I (7 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
      StackMap locals:
      StackMap stack:
         9: aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodKind:()I
            bipush 6
            if_icmpne 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
            ldc "compare"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/util/Comparator;Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            iconst_0
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.Comparator
            aload 0
            iconst_1
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.function.Function
            invokedynamic compare(Ljava/util/Comparator;Ljava/util/function/Function;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$1(Ljava/util/Comparator;Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
      StackMap locals:
      StackMap stack:
        10: aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodKind:()I
            bipush 6
            if_icmpne 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
            ldc "compare"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            iconst_0
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.function.Function
            invokedynamic compare(Ljava/util/function/Function;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$2(Ljava/util/function/Function;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
      StackMap locals:
      StackMap stack:
        11: aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodKind:()I
            bipush 6
            if_icmpne 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
            ldc "compare"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            iconst_0
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.function.ToIntFunction
            invokedynamic compare(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$3(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
      StackMap locals:
      StackMap stack:
        12: aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodKind:()I
            bipush 6
            if_icmpne 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
            ldc "compare"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/util/function/ToLongFunction;Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            iconst_0
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.function.ToLongFunction
            invokedynamic compare(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$4(Ljava/util/function/ToLongFunction;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
      StackMap locals:
      StackMap stack:
        13: aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodKind:()I
            bipush 6
            if_icmpne 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodName:()Ljava/lang/String;
            ldc "compare"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getFunctionalInterfaceMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplClass:()Ljava/lang/String;
            ldc "java/util/Comparator"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            invokevirtual java.lang.invoke.SerializedLambda.getImplMethodSignature:()Ljava/lang/String;
            ldc "(Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;Ljava/lang/Object;)I"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
            aload 0
            iconst_0
            invokevirtual java.lang.invoke.SerializedLambda.getCapturedArg:(I)Ljava/lang/Object;
            checkcast java.util.function.ToDoubleFunction
            invokedynamic compare(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  java/util/Comparator.lambda$5(Ljava/util/function/ToDoubleFunction;Ljava/lang/Object;Ljava/lang/Object;)I (6 itf)
                  (Ljava/lang/Object;Ljava/lang/Object;)I
                  1
            areturn
      StackMap locals:
      StackMap stack:
        14: new java.lang.IllegalArgumentException
            dup
            ldc "Invalid lambda deserialization"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Comparator.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  final NaturalOrderComparator = java.util.Comparators$NaturalOrderComparator of java.util.Comparators
  final NullComparator = java.util.Comparators$NullComparator of java.util.Comparators
    RuntimeVisibleAnnotations: 
      java.lang.FunctionalInterface()