public interface java.util.stream.Collector<T, A, R>
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: java.util.stream.Collector
  super_class: java.lang.Object
{
  public abstract java.util.function.Supplier<A> supplier();
    descriptor: ()Ljava/util/function/Supplier;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/function/Supplier<TA;>;

  public abstract java.util.function.BiConsumer<A, T> accumulator();
    descriptor: ()Ljava/util/function/BiConsumer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/function/BiConsumer<TA;TT;>;

  public abstract java.util.function.BinaryOperator<A> combiner();
    descriptor: ()Ljava/util/function/BinaryOperator;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/function/BinaryOperator<TA;>;

  public abstract java.util.function.Function<A, R> finisher();
    descriptor: ()Ljava/util/function/Function;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/function/Function<TA;TR;>;

  public abstract java.util.Set<java.util.stream.Collector$Characteristics> characteristics();
    descriptor: ()Ljava/util/Set;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()Ljava/util/Set<Ljava/util/stream/Collector$Characteristics;>;

  public static <T, R> java.util.stream.Collector<T, R, R> of(java.util.function.Supplier<R>, java.util.function.BiConsumer<R, T>, java.util.function.BinaryOperator<R>, java.util.stream.Collector$Characteristics[]);
    descriptor: (Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // java.util.function.Supplier supplier
        start local 1 // java.util.function.BiConsumer accumulator
        start local 2 // java.util.function.BinaryOperator combiner
        start local 3 // java.util.stream.Collector$Characteristics[] characteristics
         0: .line 264
            aload 0 /* supplier */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 265
            aload 1 /* accumulator */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 266
            aload 2 /* combiner */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 267
            aload 3 /* characteristics */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 268
            aload 3 /* characteristics */
            arraylength
            ifne 6
         5: .line 269
            getstatic java.util.stream.Collectors.CH_ID:Ljava/util/Set;
            goto 9
         6: .line 270
      StackMap locals:
      StackMap stack:
            getstatic java.util.stream.Collector$Characteristics.IDENTITY_FINISH:Ljava/util/stream/Collector$Characteristics;
         7: .line 271
            aload 3 /* characteristics */
         8: .line 270
            invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
         9: .line 268
      StackMap locals:
      StackMap stack: java.util.Set
            astore 4 /* cs */
        start local 4 // java.util.Set cs
        10: .line 272
            new java.util.stream.Collectors$CollectorImpl
            dup
            aload 0 /* supplier */
            aload 1 /* accumulator */
            aload 2 /* combiner */
            aload 4 /* cs */
            invokespecial java.util.stream.Collectors$CollectorImpl.<init>:(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V
            areturn
        end local 4 // java.util.Set cs
        end local 3 // java.util.stream.Collector$Characteristics[] characteristics
        end local 2 // java.util.function.BinaryOperator combiner
        end local 1 // java.util.function.BiConsumer accumulator
        end local 0 // java.util.function.Supplier supplier
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0         supplier  Ljava/util/function/Supplier<TR;>;
            0   11     1      accumulator  Ljava/util/function/BiConsumer<TR;TT;>;
            0   11     2         combiner  Ljava/util/function/BinaryOperator<TR;>;
            0   11     3  characteristics  [Ljava/util/stream/Collector$Characteristics;
           10   11     4               cs  Ljava/util/Set<Ljava/util/stream/Collector$Characteristics;>;
    Signature: <T:Ljava/lang/Object;R:Ljava/lang/Object;>(Ljava/util/function/Supplier<TR;>;Ljava/util/function/BiConsumer<TR;TT;>;Ljava/util/function/BinaryOperator<TR;>;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector<TT;TR;TR;>;
    MethodParameters:
                 Name  Flags
      supplier         
      accumulator      
      combiner         
      characteristics  

  public static <T, A, R> java.util.stream.Collector<T, A, R> of(java.util.function.Supplier<A>, java.util.function.BiConsumer<A, T>, java.util.function.BinaryOperator<A>, java.util.function.Function<A, R>, java.util.stream.Collector$Characteristics[]);
    descriptor: (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;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=7, locals=6, args_size=5
        start local 0 // java.util.function.Supplier supplier
        start local 1 // java.util.function.BiConsumer accumulator
        start local 2 // java.util.function.BinaryOperator combiner
        start local 3 // java.util.function.Function finisher
        start local 4 // java.util.stream.Collector$Characteristics[] characteristics
         0: .line 296
            aload 0 /* supplier */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 297
            aload 1 /* accumulator */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 298
            aload 2 /* combiner */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 299
            aload 3 /* finisher */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 300
            aload 4 /* characteristics */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 301
            getstatic java.util.stream.Collectors.CH_NOID:Ljava/util/Set;
            astore 5 /* cs */
        start local 5 // java.util.Set cs
         6: .line 302
            aload 4 /* characteristics */
            arraylength
            ifle 10
         7: .line 303
            ldc Ljava/util/stream/Collector$Characteristics;
            invokestatic java.util.EnumSet.noneOf:(Ljava/lang/Class;)Ljava/util/EnumSet;
            astore 5 /* cs */
         8: .line 304
            aload 5 /* cs */
            aload 4 /* characteristics */
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
         9: .line 305
            aload 5 /* cs */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            astore 5 /* cs */
        10: .line 307
      StackMap locals: java.util.Set
      StackMap stack:
            new java.util.stream.Collectors$CollectorImpl
            dup
            aload 0 /* supplier */
            aload 1 /* accumulator */
            aload 2 /* combiner */
            aload 3 /* finisher */
            aload 5 /* cs */
            invokespecial java.util.stream.Collectors$CollectorImpl.<init>:(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V
            areturn
        end local 5 // java.util.Set cs
        end local 4 // java.util.stream.Collector$Characteristics[] characteristics
        end local 3 // java.util.function.Function finisher
        end local 2 // java.util.function.BinaryOperator combiner
        end local 1 // java.util.function.BiConsumer accumulator
        end local 0 // java.util.function.Supplier supplier
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0         supplier  Ljava/util/function/Supplier<TA;>;
            0   11     1      accumulator  Ljava/util/function/BiConsumer<TA;TT;>;
            0   11     2         combiner  Ljava/util/function/BinaryOperator<TA;>;
            0   11     3         finisher  Ljava/util/function/Function<TA;TR;>;
            0   11     4  characteristics  [Ljava/util/stream/Collector$Characteristics;
            6   11     5               cs  Ljava/util/Set<Ljava/util/stream/Collector$Characteristics;>;
    Signature: <T:Ljava/lang/Object;A:Ljava/lang/Object;R:Ljava/lang/Object;>(Ljava/util/function/Supplier<TA;>;Ljava/util/function/BiConsumer<TA;TT;>;Ljava/util/function/BinaryOperator<TA;>;Ljava/util/function/Function<TA;TR;>;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector<TT;TA;TR;>;
    MethodParameters:
                 Name  Flags
      supplier         
      accumulator      
      combiner         
      finisher         
      characteristics  
}
Signature: <T:Ljava/lang/Object;A:Ljava/lang/Object;R:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Collector.java"
NestMembers:
  java.util.stream.Collector$Characteristics
InnerClasses:
  public final Characteristics = java.util.stream.Collector$Characteristics of java.util.stream.Collector
  CollectorImpl = java.util.stream.Collectors$CollectorImpl of java.util.stream.Collectors