public final class com.google.common.collect.Comparators
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.google.common.collect.Comparators
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.collect.Comparators this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.collect.Comparators this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/collect/Comparators;

  public static <T, S extends T> java.util.Comparator<java.lang.Iterable<S>> lexicographical(java.util.Comparator<T>);
    descriptor: (Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.util.Comparator comparator
         0: .line 65
            new com.google.common.collect.LexicographicalOrdering
            dup
            aload 0 /* comparator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Comparator
            invokespecial com.google.common.collect.LexicographicalOrdering.<init>:(Ljava/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;S:TT;>(Ljava/util/Comparator<TT;>;)Ljava/util/Comparator<Ljava/lang/Iterable<TS;>;>;
    MethodParameters:
            Name  Flags
      comparator  

  public static <T> boolean isInOrder(java.lang.Iterable<? extends T>, java.util.Comparator<T>);
    descriptor: (Ljava/lang/Iterable;Ljava/util/Comparator;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.Iterable iterable
        start local 1 // java.util.Comparator comparator
         0: .line 74
            aload 1 /* comparator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 75
            aload 0 /* iterable */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 2 /* it */
        start local 2 // java.util.Iterator it
         2: .line 76
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 10
         3: .line 77
            aload 2 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 3 /* prev */
        start local 3 // java.lang.Object prev
         4: .line 78
            goto 9
         5: .line 79
      StackMap locals: java.util.Iterator java.lang.Object
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
         6: .line 80
            aload 1 /* comparator */
            aload 3 /* prev */
            aload 4 /* next */
            invokeinterface java.util.Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
            ifle 8
         7: .line 81
            iconst_0
            ireturn
         8: .line 83
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4 /* next */
            astore 3 /* prev */
        end local 4 // java.lang.Object next
         9: .line 78
      StackMap locals:
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 3 // java.lang.Object prev
        10: .line 86
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.util.Iterator it
        end local 1 // java.util.Comparator comparator
        end local 0 // java.lang.Iterable iterable
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0    iterable  Ljava/lang/Iterable<+TT;>;
            0   11     1  comparator  Ljava/util/Comparator<TT;>;
            2   11     2          it  Ljava/util/Iterator<+TT;>;
            4   10     3        prev  TT;
            6    9     4        next  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Iterable<+TT;>;Ljava/util/Comparator<TT;>;)Z
    MethodParameters:
            Name  Flags
      iterable    
      comparator  

  public static <T> boolean isInStrictOrder(java.lang.Iterable<? extends T>, java.util.Comparator<T>);
    descriptor: (Ljava/lang/Iterable;Ljava/util/Comparator;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.Iterable iterable
        start local 1 // java.util.Comparator comparator
         0: .line 96
            aload 1 /* comparator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 97
            aload 0 /* iterable */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 2 /* it */
        start local 2 // java.util.Iterator it
         2: .line 98
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 10
         3: .line 99
            aload 2 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 3 /* prev */
        start local 3 // java.lang.Object prev
         4: .line 100
            goto 9
         5: .line 101
      StackMap locals: java.util.Iterator java.lang.Object
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 4 /* next */
        start local 4 // java.lang.Object next
         6: .line 102
            aload 1 /* comparator */
            aload 3 /* prev */
            aload 4 /* next */
            invokeinterface java.util.Comparator.compare:(Ljava/lang/Object;Ljava/lang/Object;)I
            iflt 8
         7: .line 103
            iconst_0
            ireturn
         8: .line 105
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4 /* next */
            astore 3 /* prev */
        end local 4 // java.lang.Object next
         9: .line 100
      StackMap locals:
      StackMap stack:
            aload 2 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 3 // java.lang.Object prev
        10: .line 108
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.util.Iterator it
        end local 1 // java.util.Comparator comparator
        end local 0 // java.lang.Iterable iterable
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0    iterable  Ljava/lang/Iterable<+TT;>;
            0   11     1  comparator  Ljava/util/Comparator<TT;>;
            2   11     2          it  Ljava/util/Iterator<+TT;>;
            4   10     3        prev  TT;
            6    9     4        next  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Iterable<+TT;>;Ljava/util/Comparator<TT;>;)Z
    MethodParameters:
            Name  Flags
      iterable    
      comparator  

  public static <T> java.util.stream.Collector<T, ?, java.util.List<T>> least(int, java.util.Comparator<? super T>);
    descriptor: (ILjava/util/Comparator;)Ljava/util/stream/Collector;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=2, args_size=2
        start local 0 // int k
        start local 1 // java.util.Comparator comparator
         0: .line 132
            iload 0 /* k */
            ldc "k"
            invokestatic com.google.common.collect.CollectPreconditions.checkNonnegative:(ILjava/lang/String;)I
            pop
         1: .line 133
            aload 1 /* comparator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 135
            iload 0 /* k */
            aload 1 /* comparator */
            invokedynamic get(ILjava/util/Comparator;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  com/google/common/collect/Comparators.lambda$0(ILjava/util/Comparator;)Lcom/google/common/collect/TopKSelector; (6)
                  ()Lcom/google/common/collect/TopKSelector;
         3: .line 136
            invokedynamic accept()Ljava/util/function/BiConsumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)V
                  com/google/common/collect/TopKSelector.offer(Ljava/lang/Object;)V (5)
                  (Lcom/google/common/collect/TopKSelector;Ljava/lang/Object;)V
         4: .line 137
            invokedynamic apply()Ljava/util/function/BinaryOperator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  com/google/common/collect/TopKSelector.combine(Lcom/google/common/collect/TopKSelector;)Lcom/google/common/collect/TopKSelector; (5)
                  (Lcom/google/common/collect/TopKSelector;Lcom/google/common/collect/TopKSelector;)Lcom/google/common/collect/TopKSelector;
         5: .line 138
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/google/common/collect/TopKSelector.topK()Ljava/util/List; (5)
                  (Lcom/google/common/collect/TopKSelector;)Ljava/util/List;
            iconst_1
            anewarray java.util.stream.Collector$Characteristics
            dup
            iconst_0
         6: .line 139
            getstatic java.util.stream.Collector$Characteristics.UNORDERED:Ljava/util/stream/Collector$Characteristics;
            aastore
         7: .line 134
            invokestatic java.util.stream.Collector.of:(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector;
            areturn
        end local 1 // java.util.Comparator comparator
        end local 0 // int k
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0           k  I
            0    8     1  comparator  Ljava/util/Comparator<-TT;>;
    Signature: <T:Ljava/lang/Object;>(ILjava/util/Comparator<-TT;>;)Ljava/util/stream/Collector<TT;*Ljava/util/List<TT;>;>;
    MethodParameters:
            Name  Flags
      k           
      comparator  

  public static <T> java.util.stream.Collector<T, ?, java.util.List<T>> greatest(int, java.util.Comparator<? super T>);
    descriptor: (ILjava/util/Comparator;)Ljava/util/stream/Collector;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int k
        start local 1 // java.util.Comparator comparator
         0: .line 163
            iload 0 /* k */
            aload 1 /* comparator */
            invokeinterface java.util.Comparator.reversed:()Ljava/util/Comparator;
            invokestatic com.google.common.collect.Comparators.least:(ILjava/util/Comparator;)Ljava/util/stream/Collector;
            areturn
        end local 1 // java.util.Comparator comparator
        end local 0 // int k
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0           k  I
            0    1     1  comparator  Ljava/util/Comparator<-TT;>;
    Signature: <T:Ljava/lang/Object;>(ILjava/util/Comparator<-TT;>;)Ljava/util/stream/Collector<TT;*Ljava/util/List<TT;>;>;
    MethodParameters:
            Name  Flags
      k           
      comparator  

  public static <T> java.util.Comparator<java.util.Optional<T>> emptiesFirst(java.util.Comparator<? super T>);
    descriptor: (Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Comparator valueComparator
         0: .line 175
            aload 0 /* valueComparator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 176
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/google/common/collect/Comparators.lambda$4(Ljava/util/Optional;)Ljava/lang/Object; (6)
                  (Ljava/util/Optional;)Ljava/lang/Object;
            aload 0 /* valueComparator */
            invokestatic java.util.Comparator.nullsFirst:(Ljava/util/Comparator;)Ljava/util/Comparator;
            invokestatic java.util.Comparator.comparing:(Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 0 // java.util.Comparator valueComparator
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0  valueComparator  Ljava/util/Comparator<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<Ljava/util/Optional<TT;>;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
                 Name  Flags
      valueComparator  

  public static <T> java.util.Comparator<java.util.Optional<T>> emptiesLast(java.util.Comparator<? super T>);
    descriptor: (Ljava/util/Comparator;)Ljava/util/Comparator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Comparator valueComparator
         0: .line 188
            aload 0 /* valueComparator */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 189
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  com/google/common/collect/Comparators.lambda$5(Ljava/util/Optional;)Ljava/lang/Object; (6)
                  (Ljava/util/Optional;)Ljava/lang/Object;
            aload 0 /* valueComparator */
            invokestatic java.util.Comparator.nullsLast:(Ljava/util/Comparator;)Ljava/util/Comparator;
            invokestatic java.util.Comparator.comparing:(Ljava/util/function/Function;Ljava/util/Comparator;)Ljava/util/Comparator;
            areturn
        end local 0 // java.util.Comparator valueComparator
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0  valueComparator  Ljava/util/Comparator<-TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Comparator<-TT;>;)Ljava/util/Comparator<Ljava/util/Optional<TT;>;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
    MethodParameters:
                 Name  Flags
      valueComparator  

  private static com.google.common.collect.TopKSelector lambda$0(int, java.util.Comparator);
    descriptor: (ILjava/util/Comparator;)Lcom/google/common/collect/TopKSelector;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 135
            iload 0
            aload 1
            invokestatic com.google.common.collect.TopKSelector.least:(ILjava/util/Comparator;)Lcom/google/common/collect/TopKSelector;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.Object lambda$4(java.util.Optional);
    descriptor: (Ljava/util/Optional;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Optional o
         0: .line 176
            aload 0 /* o */
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 0 // java.util.Optional o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Ljava/util/Optional<TT;>;

  private static java.lang.Object lambda$5(java.util.Optional);
    descriptor: (Ljava/util/Optional;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Optional o
         0: .line 189
            aload 0 /* o */
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 0 // java.util.Optional o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Ljava/util/Optional<TT;>;
}
SourceFile: "Comparators.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Characteristics = java.util.stream.Collector$Characteristics of java.util.stream.Collector
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
      com.google.common.annotations.GwtCompatible()