abstract class com.mongodb.internal.connection.Compressor
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.mongodb.internal.connection.Compressor
  super_class: java.lang.Object
{
  static final int BUFFER_SIZE;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 256

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.internal.connection.Compressor this
         0: .line 30
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.mongodb.internal.connection.Compressor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/connection/Compressor;

  abstract java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0400) ACC_ABSTRACT

  abstract byte getId();
    descriptor: ()B
    flags: (0x0400) ACC_ABSTRACT

  void compress(java.util.List<org.bson.ByteBuf>, org.bson.io.BsonOutput);
    descriptor: (Ljava/util/List;Lorg/bson/io/BsonOutput;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // com.mongodb.internal.connection.Compressor this
        start local 1 // java.util.List source
        start local 2 // org.bson.io.BsonOutput target
         0: .line 39
            new com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream
            dup
            sipush 1024
            invokespecial com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream.<init>:(I)V
            astore 3 /* baos */
        start local 3 // com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream baos
         1: .line 40
            aconst_null
            astore 4 /* outputStream */
        start local 4 // java.io.OutputStream outputStream
         2: .line 42
            aload 0 /* this */
            aload 3 /* baos */
            invokevirtual com.mongodb.internal.connection.Compressor.getOutputStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
            astore 4 /* outputStream */
         3: .line 43
            sipush 256
            newarray 8
            astore 5 /* scratch */
        start local 5 // byte[] scratch
         4: .line 44
            aload 1 /* source */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 11
      StackMap locals: com.mongodb.internal.connection.Compressor java.util.List org.bson.io.BsonOutput com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream java.io.OutputStream byte[] top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bson.ByteBuf
            astore 6 /* cur */
        start local 6 // org.bson.ByteBuf cur
         6: .line 45
            goto 10
         7: .line 46
      StackMap locals: com.mongodb.internal.connection.Compressor java.util.List org.bson.io.BsonOutput com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream java.io.OutputStream byte[] org.bson.ByteBuf java.util.Iterator
      StackMap stack:
            aload 6 /* cur */
            invokeinterface org.bson.ByteBuf.remaining:()I
            aload 5 /* scratch */
            arraylength
            invokestatic java.lang.Math.min:(II)I
            istore 8 /* numBytes */
        start local 8 // int numBytes
         8: .line 47
            aload 6 /* cur */
            aload 5 /* scratch */
            iconst_0
            iload 8 /* numBytes */
            invokeinterface org.bson.ByteBuf.get:([BII)Lorg/bson/ByteBuf;
            pop
         9: .line 48
            aload 4 /* outputStream */
            aload 5 /* scratch */
            iconst_0
            iload 8 /* numBytes */
            invokevirtual java.io.OutputStream.write:([BII)V
        end local 8 // int numBytes
        10: .line 45
      StackMap locals:
      StackMap stack:
            aload 6 /* cur */
            invokeinterface org.bson.ByteBuf.hasRemaining:()Z
            ifne 7
        end local 6 // org.bson.ByteBuf cur
        11: .line 44
      StackMap locals: com.mongodb.internal.connection.Compressor java.util.List org.bson.io.BsonOutput com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream java.io.OutputStream byte[] top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 5 // byte[] scratch
        12: .line 52
            goto 21
      StackMap locals: com.mongodb.internal.connection.Compressor java.util.List org.bson.io.BsonOutput com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream java.io.OutputStream
      StackMap stack: java.io.IOException
        13: astore 5 /* e */
        start local 5 // java.io.IOException e
        14: .line 53
            new com.mongodb.MongoInternalException
            dup
            ldc "Unexpected IOException"
            aload 5 /* e */
            invokespecial com.mongodb.MongoInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException e
        15: .line 54
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        16: .line 56
            aload 4 /* outputStream */
            ifnull 20
        17: .line 57
            aload 4 /* outputStream */
            invokevirtual java.io.OutputStream.close:()V
        18: .line 59
            goto 20
      StackMap locals: com.mongodb.internal.connection.Compressor java.util.List org.bson.io.BsonOutput com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream java.io.OutputStream top top top top java.lang.Throwable
      StackMap stack: java.io.IOException
        19: pop
        20: .line 62
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        21: .line 56
      StackMap locals: com.mongodb.internal.connection.Compressor java.util.List org.bson.io.BsonOutput com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream java.io.OutputStream
      StackMap stack:
            aload 4 /* outputStream */
            ifnull 25
        22: .line 57
            aload 4 /* outputStream */
            invokevirtual java.io.OutputStream.close:()V
        23: .line 59
            goto 25
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
        25: .line 63
      StackMap locals:
      StackMap stack:
            aload 2 /* target */
            aload 3 /* baos */
            invokevirtual com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream.getInternalBytes:()[B
            iconst_0
            aload 3 /* baos */
            invokevirtual com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream.size:()I
            invokeinterface org.bson.io.BsonOutput.writeBytes:([BII)V
        26: .line 64
            return
        end local 4 // java.io.OutputStream outputStream
        end local 3 // com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream baos
        end local 2 // org.bson.io.BsonOutput target
        end local 1 // java.util.List source
        end local 0 // com.mongodb.internal.connection.Compressor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   27     0          this  Lcom/mongodb/internal/connection/Compressor;
            0   27     1        source  Ljava/util/List<Lorg/bson/ByteBuf;>;
            0   27     2        target  Lorg/bson/io/BsonOutput;
            1   27     3          baos  Lcom/mongodb/internal/connection/Compressor$BufferExposingByteArrayOutputStream;
            2   27     4  outputStream  Ljava/io/OutputStream;
            4   12     5       scratch  [B
            6   11     6           cur  Lorg/bson/ByteBuf;
            8   10     8      numBytes  I
           14   15     5             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2    12      13  Class java.io.IOException
           2    15      15  any
          16    18      19  Class java.io.IOException
          21    23      24  Class java.io.IOException
    Signature: (Ljava/util/List<Lorg/bson/ByteBuf;>;Lorg/bson/io/BsonOutput;)V
    MethodParameters:
        Name  Flags
      source  final
      target  final

  void uncompress(org.bson.ByteBuf, org.bson.ByteBuf);
    descriptor: (Lorg/bson/ByteBuf;Lorg/bson/ByteBuf;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // com.mongodb.internal.connection.Compressor this
        start local 1 // org.bson.ByteBuf source
        start local 2 // org.bson.ByteBuf target
         0: .line 67
            aconst_null
            astore 3 /* inputStream */
        start local 3 // java.io.InputStream inputStream
         1: .line 70
            aload 0 /* this */
            new com.mongodb.internal.connection.Compressor$ByteBufInputStream
            dup
            aload 1 /* source */
            invokespecial com.mongodb.internal.connection.Compressor$ByteBufInputStream.<init>:(Lorg/bson/ByteBuf;)V
            invokevirtual com.mongodb.internal.connection.Compressor.getInputStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
            astore 3 /* inputStream */
         2: .line 71
            sipush 256
            newarray 8
            astore 4 /* scratch */
        start local 4 // byte[] scratch
         3: .line 72
            aload 3 /* inputStream */
            aload 4 /* scratch */
            invokevirtual java.io.InputStream.read:([B)I
            istore 5 /* numBytes */
        start local 5 // int numBytes
         4: .line 73
            goto 7
         5: .line 74
      StackMap locals: java.io.InputStream byte[] int
      StackMap stack:
            aload 2 /* target */
            aload 4 /* scratch */
            iconst_0
            iload 5 /* numBytes */
            invokeinterface org.bson.ByteBuf.put:([BII)Lorg/bson/ByteBuf;
            pop
         6: .line 75
            aload 3 /* inputStream */
            aload 4 /* scratch */
            invokevirtual java.io.InputStream.read:([B)I
            istore 5 /* numBytes */
         7: .line 73
      StackMap locals:
      StackMap stack:
            iload 5 /* numBytes */
            iconst_m1
            if_icmpne 5
        end local 5 // int numBytes
        end local 4 // byte[] scratch
         8: .line 77
            goto 17
      StackMap locals: com.mongodb.internal.connection.Compressor org.bson.ByteBuf org.bson.ByteBuf java.io.InputStream
      StackMap stack: java.io.IOException
         9: astore 4 /* e */
        start local 4 // java.io.IOException e
        10: .line 78
            new com.mongodb.MongoInternalException
            dup
            ldc "Unexpected IOException"
            aload 4 /* e */
            invokespecial com.mongodb.MongoInternalException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.IOException e
        11: .line 79
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        12: .line 81
            aload 3 /* inputStream */
            ifnull 16
        13: .line 82
            aload 3 /* inputStream */
            invokevirtual java.io.InputStream.close:()V
        14: .line 84
            goto 16
      StackMap locals: com.mongodb.internal.connection.Compressor org.bson.ByteBuf org.bson.ByteBuf java.io.InputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        15: pop
        16: .line 87
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        17: .line 81
      StackMap locals: com.mongodb.internal.connection.Compressor org.bson.ByteBuf org.bson.ByteBuf java.io.InputStream
      StackMap stack:
            aload 3 /* inputStream */
            ifnull 21
        18: .line 82
            aload 3 /* inputStream */
            invokevirtual java.io.InputStream.close:()V
        19: .line 84
            goto 21
      StackMap locals:
      StackMap stack: java.io.IOException
        20: pop
        21: .line 88
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.io.InputStream inputStream
        end local 2 // org.bson.ByteBuf target
        end local 1 // org.bson.ByteBuf source
        end local 0 // com.mongodb.internal.connection.Compressor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Lcom/mongodb/internal/connection/Compressor;
            0   22     1       source  Lorg/bson/ByteBuf;
            0   22     2       target  Lorg/bson/ByteBuf;
            1   22     3  inputStream  Ljava/io/InputStream;
            3    8     4      scratch  [B
            4    8     5     numBytes  I
           10   11     4            e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     8       9  Class java.io.IOException
           1    11      11  any
          12    14      15  Class java.io.IOException
          17    19      20  Class java.io.IOException
    MethodParameters:
        Name  Flags
      source  final
      target  final

  java.io.OutputStream getOutputStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.internal.connection.Compressor this
        start local 1 // java.io.OutputStream source
         0: .line 92
            new java.io.UnsupportedEncodingException
            dup
            invokespecial java.io.UnsupportedEncodingException.<init>:()V
            athrow
        end local 1 // java.io.OutputStream source
        end local 0 // com.mongodb.internal.connection.Compressor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/internal/connection/Compressor;
            0    1     1  source  Ljava/io/OutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      source  final

  java.io.InputStream getInputStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.internal.connection.Compressor this
        start local 1 // java.io.InputStream source
         0: .line 97
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 1 // java.io.InputStream source
        end local 0 // com.mongodb.internal.connection.Compressor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/mongodb/internal/connection/Compressor;
            0    1     1  source  Ljava/io/InputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      source  final
}
SourceFile: "Compressor.java"
NestMembers:
  com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream  com.mongodb.internal.connection.Compressor$ByteBufInputStream
InnerClasses:
  private final BufferExposingByteArrayOutputStream = com.mongodb.internal.connection.Compressor$BufferExposingByteArrayOutputStream of com.mongodb.internal.connection.Compressor
  private final ByteBufInputStream = com.mongodb.internal.connection.Compressor$ByteBufInputStream of com.mongodb.internal.connection.Compressor