public class net.bytebuddy.utility.StreamDrainer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: net.bytebuddy.utility.StreamDrainer
  super_class: java.lang.Object
{
  public static final int DEFAULT_BUFFER_SIZE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1024

  public static final net.bytebuddy.utility.StreamDrainer DEFAULT;
    descriptor: Lnet/bytebuddy/utility/StreamDrainer;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final int END_OF_STREAM;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int FROM_BEGINNING;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 39
            new net.bytebuddy.utility.StreamDrainer
            dup
            invokespecial net.bytebuddy.utility.StreamDrainer.<init>:()V
            putstatic net.bytebuddy.utility.StreamDrainer.DEFAULT:Lnet/bytebuddy/utility/StreamDrainer;
         1: .line 49
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // net.bytebuddy.utility.StreamDrainer this
         0: .line 60
            aload 0 /* this */
            sipush 1024
            invokespecial net.bytebuddy.utility.StreamDrainer.<init>:(I)V
         1: .line 61
            return
        end local 0 // net.bytebuddy.utility.StreamDrainer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lnet/bytebuddy/utility/StreamDrainer;

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // net.bytebuddy.utility.StreamDrainer this
        start local 1 // int bufferSize
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            iload 1 /* bufferSize */
            putfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
         2: .line 70
            return
        end local 1 // int bufferSize
        end local 0 // net.bytebuddy.utility.StreamDrainer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lnet/bytebuddy/utility/StreamDrainer;
            0    3     1  bufferSize  I
    MethodParameters:
            Name  Flags
      bufferSize  

  public byte[] drain(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // net.bytebuddy.utility.StreamDrainer this
        start local 1 // java.io.InputStream inputStream
         0: .line 80
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* previousBytes */
        start local 2 // java.util.List previousBytes
         1: .line 81
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            newarray 8
            astore 3 /* currentArray */
        start local 3 // byte[] currentArray
         2: .line 82
            iconst_0
            istore 4 /* currentIndex */
        start local 4 // int currentIndex
         3: .line 85
      StackMap locals: java.util.List byte[] int
      StackMap stack:
            aload 1 /* inputStream */
            aload 3 /* currentArray */
            iload 4 /* currentIndex */
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            iload 4 /* currentIndex */
            isub
            invokevirtual java.io.InputStream.read:([BII)I
            istore 5 /* currentRead */
        start local 5 // int currentRead
         4: .line 86
            iload 4 /* currentIndex */
            iload 5 /* currentRead */
            ifle 5
            iload 5 /* currentRead */
            goto 6
      StackMap locals: net.bytebuddy.utility.StreamDrainer java.io.InputStream java.util.List byte[] int int
      StackMap stack: int
         5: iconst_0
      StackMap locals: net.bytebuddy.utility.StreamDrainer java.io.InputStream java.util.List byte[] int int
      StackMap stack: int int
         6: iadd
            istore 4 /* currentIndex */
         7: .line 87
            iload 4 /* currentIndex */
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            if_icmpne 11
         8: .line 88
            aload 2 /* previousBytes */
            aload 3 /* currentArray */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 89
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            newarray 8
            astore 3 /* currentArray */
        10: .line 90
            iconst_0
            istore 4 /* currentIndex */
        11: .line 92
      StackMap locals:
      StackMap stack:
            iload 5 /* currentRead */
            iconst_m1
            if_icmpne 3
        12: .line 93
            aload 2 /* previousBytes */
            invokeinterface java.util.List.size:()I
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            imul
            iload 4 /* currentIndex */
            iadd
            newarray 8
            astore 6 /* result */
        start local 6 // byte[] result
        13: .line 94
            iconst_0
            istore 7 /* arrayIndex */
        start local 7 // int arrayIndex
        14: .line 95
            aload 2 /* previousBytes */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 17
      StackMap locals: net.bytebuddy.utility.StreamDrainer java.io.InputStream java.util.List byte[] int int byte[] int top java.util.Iterator
      StackMap stack:
        15: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast byte[]
            astore 8 /* previousByte */
        start local 8 // byte[] previousByte
        16: .line 96
            aload 8 /* previousByte */
            iconst_0
            aload 6 /* result */
            iload 7 /* arrayIndex */
            iinc 7 /* arrayIndex */ 1
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            imul
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        end local 8 // byte[] previousByte
        17: .line 95
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        18: .line 98
            aload 3 /* currentArray */
            iconst_0
            aload 6 /* result */
            iload 7 /* arrayIndex */
            aload 0 /* this */
            getfield net.bytebuddy.utility.StreamDrainer.bufferSize:I
            imul
            iload 4 /* currentIndex */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        19: .line 99
            aload 6 /* result */
            areturn
        end local 7 // int arrayIndex
        end local 6 // byte[] result
        end local 5 // int currentRead
        end local 4 // int currentIndex
        end local 3 // byte[] currentArray
        end local 2 // java.util.List previousBytes
        end local 1 // java.io.InputStream inputStream
        end local 0 // net.bytebuddy.utility.StreamDrainer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   20     0           this  Lnet/bytebuddy/utility/StreamDrainer;
            0   20     1    inputStream  Ljava/io/InputStream;
            1   20     2  previousBytes  Ljava/util/List<[B>;
            2   20     3   currentArray  [B
            3   20     4   currentIndex  I
            4   20     5    currentRead  I
           13   20     6         result  [B
           14   20     7     arrayIndex  I
           16   17     8   previousByte  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      inputStream  
}
SourceFile: "StreamDrainer.java"
InnerClasses:
  public abstract Enhance = net.bytebuddy.build.HashCodeAndEqualsPlugin$Enhance of net.bytebuddy.build.HashCodeAndEqualsPlugin
    RuntimeVisibleAnnotations: 
      net.bytebuddy.build.HashCodeAndEqualsPlugin$Enhance()