public abstract class com.google.common.io.ByteSource
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.google.common.io.ByteSource
  super_class: java.lang.Object
{
  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.io.ByteSource this
         0: .line 67
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/io/ByteSource;

  public com.google.common.io.CharSource asCharSource(java.nio.charset.Charset);
    descriptor: (Ljava/nio/charset/Charset;)Lcom/google/common/io/CharSource;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // java.nio.charset.Charset charset
         0: .line 79
            new com.google.common.io.ByteSource$AsCharSource
            dup
            aload 0 /* this */
            aload 1 /* charset */
            invokespecial com.google.common.io.ByteSource$AsCharSource.<init>:(Lcom/google/common/io/ByteSource;Ljava/nio/charset/Charset;)V
            areturn
        end local 1 // java.nio.charset.Charset charset
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/google/common/io/ByteSource;
            0    1     1  charset  Ljava/nio/charset/Charset;
    MethodParameters:
         Name  Flags
      charset  

  public abstract java.io.InputStream openStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  public java.io.InputStream openBufferedStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.google.common.io.ByteSource this
         0: .line 105
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            astore 1 /* in */
        start local 1 // java.io.InputStream in
         1: .line 106
            aload 1 /* in */
            instanceof java.io.BufferedInputStream
            ifeq 3
         2: .line 107
            aload 1 /* in */
            checkcast java.io.BufferedInputStream
            goto 4
         3: .line 108
      StackMap locals: java.io.InputStream
      StackMap stack:
            new java.io.BufferedInputStream
            dup
            aload 1 /* in */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
         4: .line 106
      StackMap locals:
      StackMap stack: java.io.BufferedInputStream
            areturn
        end local 1 // java.io.InputStream in
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/google/common/io/ByteSource;
            1    5     1    in  Ljava/io/InputStream;
    Exceptions:
      throws java.io.IOException

  public com.google.common.io.ByteSource slice(long, long);
    descriptor: (JJ)Lcom/google/common/io/ByteSource;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // long offset
        start local 3 // long length
         0: .line 121
            new com.google.common.io.ByteSource$SlicedByteSource
            dup
            aload 0 /* this */
            lload 1 /* offset */
            lload 3 /* length */
            invokespecial com.google.common.io.ByteSource$SlicedByteSource.<init>:(Lcom/google/common/io/ByteSource;JJ)V
            areturn
        end local 3 // long length
        end local 1 // long offset
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/google/common/io/ByteSource;
            0    1     1  offset  J
            0    1     3  length  J
    MethodParameters:
        Name  Flags
      offset  
      length  

  public boolean isEmpty();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // com.google.common.io.ByteSource this
         0: .line 138
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.sizeIfKnown:()Lcom/google/common/base/Optional;
            astore 1 /* sizeIfKnown */
        start local 1 // com.google.common.base.Optional sizeIfKnown
         1: .line 139
            aload 1 /* sizeIfKnown */
            invokevirtual com.google.common.base.Optional.isPresent:()Z
            ifeq 4
         2: .line 140
            aload 1 /* sizeIfKnown */
            invokevirtual com.google.common.base.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lconst_0
            lcmp
            ifne 3
            iconst_1
            ireturn
      StackMap locals: com.google.common.base.Optional
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 142
      StackMap locals:
      StackMap stack:
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 2 /* closer */
        start local 2 // com.google.common.io.Closer closer
         5: .line 144
            aload 2 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         6: .line 145
            aload 3 /* in */
            invokevirtual java.io.InputStream.read:()I
            iconst_m1
            if_icmpne 7
            iconst_1
            goto 8
      StackMap locals: com.google.common.io.Closer java.io.InputStream
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 5
         9: .line 149
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        10: .line 145
            iload 5
            ireturn
        end local 3 // java.io.InputStream in
        11: .line 146
      StackMap locals: com.google.common.io.ByteSource com.google.common.base.Optional com.google.common.io.Closer
      StackMap stack: java.lang.Throwable
            astore 3 /* e */
        start local 3 // java.lang.Throwable e
        12: .line 147
            aload 2 /* closer */
            aload 3 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.Throwable e
        13: .line 148
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        14: .line 149
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        15: .line 150
            aload 4
            athrow
        end local 2 // com.google.common.io.Closer closer
        end local 1 // com.google.common.base.Optional sizeIfKnown
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lcom/google/common/io/ByteSource;
            1   16     1  sizeIfKnown  Lcom/google/common/base/Optional<Ljava/lang/Long;>;
            5   16     2       closer  Lcom/google/common/io/Closer;
            6   11     3           in  Ljava/io/InputStream;
           12   13     3            e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           5     9      11  Class java.lang.Throwable
           5     9      13  any
          11    13      13  any
    Exceptions:
      throws java.io.IOException

  public com.google.common.base.Optional<java.lang.Long> sizeIfKnown();
    descriptor: ()Lcom/google/common/base/Optional;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.io.ByteSource this
         0: .line 169
            invokestatic com.google.common.base.Optional.absent:()Lcom/google/common/base/Optional;
            areturn
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/io/ByteSource;
    Signature: ()Lcom/google/common/base/Optional<Ljava/lang/Long;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()

  public long size();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=1
        start local 0 // com.google.common.io.ByteSource this
         0: .line 192
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.sizeIfKnown:()Lcom/google/common/base/Optional;
            astore 1 /* sizeIfKnown */
        start local 1 // com.google.common.base.Optional sizeIfKnown
         1: .line 193
            aload 1 /* sizeIfKnown */
            invokevirtual com.google.common.base.Optional.isPresent:()Z
            ifeq 3
         2: .line 194
            aload 1 /* sizeIfKnown */
            invokevirtual com.google.common.base.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lreturn
         3: .line 197
      StackMap locals: com.google.common.base.Optional
      StackMap stack:
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 2 /* closer */
        start local 2 // com.google.common.io.Closer closer
         4: .line 199
            aload 2 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         5: .line 200
            aload 0 /* this */
            aload 3 /* in */
            invokevirtual com.google.common.io.ByteSource.countBySkipping:(Ljava/io/InputStream;)J
            lstore 5
         6: .line 204
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
         7: .line 200
            lload 5
            lreturn
        end local 3 // java.io.InputStream in
         8: .line 201
      StackMap locals: com.google.common.io.ByteSource com.google.common.base.Optional com.google.common.io.Closer
      StackMap stack: java.io.IOException
            pop
         9: .line 204
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
            goto 13
        10: .line 203
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        11: .line 204
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        12: .line 205
            aload 4
            athrow
        13: .line 207
      StackMap locals:
      StackMap stack:
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 2 /* closer */
        14: .line 209
            aload 2 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 3 /* in */
        start local 3 // java.io.InputStream in
        15: .line 210
            aload 3 /* in */
            invokestatic com.google.common.io.ByteStreams.exhaust:(Ljava/io/InputStream;)J
            lstore 5
        16: .line 214
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        17: .line 210
            lload 5
            lreturn
        end local 3 // java.io.InputStream in
        18: .line 211
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3 /* e */
        start local 3 // java.lang.Throwable e
        19: .line 212
            aload 2 /* closer */
            aload 3 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.Throwable e
        20: .line 213
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        21: .line 214
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        22: .line 215
            aload 4
            athrow
        end local 2 // com.google.common.io.Closer closer
        end local 1 // com.google.common.base.Optional sizeIfKnown
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lcom/google/common/io/ByteSource;
            1   23     1  sizeIfKnown  Lcom/google/common/base/Optional<Ljava/lang/Long;>;
            4   23     2       closer  Lcom/google/common/io/Closer;
            5    8     3           in  Ljava/io/InputStream;
           15   18     3           in  Ljava/io/InputStream;
           19   20     3            e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     6       8  Class java.io.IOException
           4     6      10  any
           8     9      10  any
          14    16      18  Class java.lang.Throwable
          14    16      20  any
          18    20      20  any
    Exceptions:
      throws java.io.IOException

  private long countBySkipping(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // java.io.InputStream in
         0: .line 220
            lconst_0
            lstore 2 /* count */
        start local 2 // long count
         1: .line 222
            goto 3
        start local 4 // long skipped
         2: .line 223
      StackMap locals: long long
      StackMap stack:
            lload 2 /* count */
            lload 4 /* skipped */
            ladd
            lstore 2 /* count */
        end local 4 // long skipped
         3: .line 222
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            ldc 2147483647
            invokestatic com.google.common.io.ByteStreams.skipUpTo:(Ljava/io/InputStream;J)J
            dup2
            lstore 4 /* skipped */
        start local 4 // long skipped
         4: lconst_0
            lcmp
            ifgt 2
         5: .line 225
            lload 2 /* count */
            lreturn
        end local 4 // long skipped
        end local 2 // long count
        end local 1 // java.io.InputStream in
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/google/common/io/ByteSource;
            0    6     1       in  Ljava/io/InputStream;
            1    6     2    count  J
            2    3     4  skipped  J
            4    6     4  skipped  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    

  public long copyTo(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // java.io.OutputStream output
         0: .line 238
            aload 1 /* output */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 240
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 2 /* closer */
        start local 2 // com.google.common.io.Closer closer
         2: .line 242
            aload 2 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         3: .line 243
            aload 3 /* in */
            aload 1 /* output */
            invokestatic com.google.common.io.ByteStreams.copy:(Ljava/io/InputStream;Ljava/io/OutputStream;)J
            lstore 5
         4: .line 247
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
         5: .line 243
            lload 5
            lreturn
        end local 3 // java.io.InputStream in
         6: .line 244
      StackMap locals: com.google.common.io.ByteSource java.io.OutputStream com.google.common.io.Closer
      StackMap stack: java.lang.Throwable
            astore 3 /* e */
        start local 3 // java.lang.Throwable e
         7: .line 245
            aload 2 /* closer */
            aload 3 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.Throwable e
         8: .line 246
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         9: .line 247
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        10: .line 248
            aload 4
            athrow
        end local 2 // com.google.common.io.Closer closer
        end local 1 // java.io.OutputStream output
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lcom/google/common/io/ByteSource;
            0   11     1  output  Ljava/io/OutputStream;
            2   11     2  closer  Lcom/google/common/io/Closer;
            3    6     3      in  Ljava/io/InputStream;
            7    8     3       e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4       6  Class java.lang.Throwable
           2     4       8  any
           6     8       8  any
    Exceptions:
      throws java.io.IOException
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()
    MethodParameters:
        Name  Flags
      output  

  public long copyTo(com.google.common.io.ByteSink);
    descriptor: (Lcom/google/common/io/ByteSink;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // com.google.common.io.ByteSink sink
         0: .line 260
            aload 1 /* sink */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 262
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 2 /* closer */
        start local 2 // com.google.common.io.Closer closer
         2: .line 264
            aload 2 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         3: .line 265
            aload 2 /* closer */
            aload 1 /* sink */
            invokevirtual com.google.common.io.ByteSink.openStream:()Ljava/io/OutputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.OutputStream
            astore 4 /* out */
        start local 4 // java.io.OutputStream out
         4: .line 266
            aload 3 /* in */
            aload 4 /* out */
            invokestatic com.google.common.io.ByteStreams.copy:(Ljava/io/InputStream;Ljava/io/OutputStream;)J
            lstore 6
         5: .line 270
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
         6: .line 266
            lload 6
            lreturn
        end local 4 // java.io.OutputStream out
        end local 3 // java.io.InputStream in
         7: .line 267
      StackMap locals: com.google.common.io.ByteSource com.google.common.io.ByteSink com.google.common.io.Closer
      StackMap stack: java.lang.Throwable
            astore 3 /* e */
        start local 3 // java.lang.Throwable e
         8: .line 268
            aload 2 /* closer */
            aload 3 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.Throwable e
         9: .line 269
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        10: .line 270
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        11: .line 271
            aload 5
            athrow
        end local 2 // com.google.common.io.Closer closer
        end local 1 // com.google.common.io.ByteSink sink
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lcom/google/common/io/ByteSource;
            0   12     1    sink  Lcom/google/common/io/ByteSink;
            2   12     2  closer  Lcom/google/common/io/Closer;
            3    7     3      in  Ljava/io/InputStream;
            4    7     4     out  Ljava/io/OutputStream;
            8    9     3       e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     5       7  Class java.lang.Throwable
           2     5       9  any
           7     9       9  any
    Exceptions:
      throws java.io.IOException
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.CanIgnoreReturnValue()
    MethodParameters:
      Name  Flags
      sink  

  public byte[] read();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // com.google.common.io.ByteSource this
         0: .line 280
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 1 /* closer */
        start local 1 // com.google.common.io.Closer closer
         1: .line 282
            aload 1 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 2 /* in */
        start local 2 // java.io.InputStream in
         2: .line 283
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.sizeIfKnown:()Lcom/google/common/base/Optional;
            astore 3 /* size */
        start local 3 // com.google.common.base.Optional size
         3: .line 284
            aload 3 /* size */
            invokevirtual com.google.common.base.Optional.isPresent:()Z
            ifeq 5
         4: .line 285
            aload 2 /* in */
            aload 3 /* size */
            invokevirtual com.google.common.base.Optional.get:()Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            invokestatic com.google.common.io.ByteStreams.toByteArray:(Ljava/io/InputStream;J)[B
            goto 6
         5: .line 286
      StackMap locals: com.google.common.io.Closer java.io.InputStream com.google.common.base.Optional
      StackMap stack:
            aload 2 /* in */
            invokestatic com.google.common.io.ByteStreams.toByteArray:(Ljava/io/InputStream;)[B
      StackMap locals:
      StackMap stack: byte[]
         6: astore 5
         7: .line 290
            aload 1 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
         8: .line 284
            aload 5
            areturn
        end local 3 // com.google.common.base.Optional size
        end local 2 // java.io.InputStream in
         9: .line 287
      StackMap locals: com.google.common.io.ByteSource com.google.common.io.Closer
      StackMap stack: java.lang.Throwable
            astore 2 /* e */
        start local 2 // java.lang.Throwable e
        10: .line 288
            aload 1 /* closer */
            aload 2 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.lang.Throwable e
        11: .line 289
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        12: .line 290
            aload 1 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        13: .line 291
            aload 4
            athrow
        end local 1 // com.google.common.io.Closer closer
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lcom/google/common/io/ByteSource;
            1   14     1  closer  Lcom/google/common/io/Closer;
            2    9     2      in  Ljava/io/InputStream;
            3    9     3    size  Lcom/google/common/base/Optional<Ljava/lang/Long;>;
           10   11     2       e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     7       9  Class java.lang.Throwable
           1     7      11  any
           9    11      11  any
    Exceptions:
      throws java.io.IOException

  public <T> T read(com.google.common.io.ByteProcessor<T>);
    descriptor: (Lcom/google/common/io/ByteProcessor;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // com.google.common.io.ByteProcessor processor
         0: .line 306
            aload 1 /* processor */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 308
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 2 /* closer */
        start local 2 // com.google.common.io.Closer closer
         2: .line 310
            aload 2 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         3: .line 311
            aload 3 /* in */
            aload 1 /* processor */
            invokestatic com.google.common.io.ByteStreams.readBytes:(Ljava/io/InputStream;Lcom/google/common/io/ByteProcessor;)Ljava/lang/Object;
            astore 5
         4: .line 315
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
         5: .line 311
            aload 5
            areturn
        end local 3 // java.io.InputStream in
         6: .line 312
      StackMap locals: com.google.common.io.ByteSource com.google.common.io.ByteProcessor com.google.common.io.Closer
      StackMap stack: java.lang.Throwable
            astore 3 /* e */
        start local 3 // java.lang.Throwable e
         7: .line 313
            aload 2 /* closer */
            aload 3 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.Throwable e
         8: .line 314
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         9: .line 315
            aload 2 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        10: .line 316
            aload 4
            athrow
        end local 2 // com.google.common.io.Closer closer
        end local 1 // com.google.common.io.ByteProcessor processor
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lcom/google/common/io/ByteSource;
            0   11     1  processor  Lcom/google/common/io/ByteProcessor<TT;>;
            2   11     2     closer  Lcom/google/common/io/Closer;
            3    6     3         in  Ljava/io/InputStream;
            7    8     3          e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4       6  Class java.lang.Throwable
           2     4       8  any
           6     8       8  any
    Exceptions:
      throws java.io.IOException
    Signature: <T:Ljava/lang/Object;>(Lcom/google/common/io/ByteProcessor<TT;>;)TT;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.Beta()
      com.google.errorprone.annotations.CanIgnoreReturnValue()
    MethodParameters:
           Name  Flags
      processor  

  public com.google.common.hash.HashCode hash(com.google.common.hash.HashFunction);
    descriptor: (Lcom/google/common/hash/HashFunction;)Lcom/google/common/hash/HashCode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // com.google.common.hash.HashFunction hashFunction
         0: .line 325
            aload 1 /* hashFunction */
            invokeinterface com.google.common.hash.HashFunction.newHasher:()Lcom/google/common/hash/Hasher;
            astore 2 /* hasher */
        start local 2 // com.google.common.hash.Hasher hasher
         1: .line 326
            aload 0 /* this */
            aload 2 /* hasher */
            invokestatic com.google.common.hash.Funnels.asOutputStream:(Lcom/google/common/hash/PrimitiveSink;)Ljava/io/OutputStream;
            invokevirtual com.google.common.io.ByteSource.copyTo:(Ljava/io/OutputStream;)J
            pop2
         2: .line 327
            aload 2 /* hasher */
            invokeinterface com.google.common.hash.Hasher.hash:()Lcom/google/common/hash/HashCode;
            areturn
        end local 2 // com.google.common.hash.Hasher hasher
        end local 1 // com.google.common.hash.HashFunction hashFunction
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/google/common/io/ByteSource;
            0    3     1  hashFunction  Lcom/google/common/hash/HashFunction;
            1    3     2        hasher  Lcom/google/common/hash/Hasher;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      hashFunction  

  public boolean contentEquals(com.google.common.io.ByteSource);
    descriptor: (Lcom/google/common/io/ByteSource;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // com.google.common.io.ByteSource this
        start local 1 // com.google.common.io.ByteSource other
         0: .line 337
            aload 1 /* other */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 339
            invokestatic com.google.common.io.ByteStreams.createBuffer:()[B
            astore 2 /* buf1 */
        start local 2 // byte[] buf1
         2: .line 340
            invokestatic com.google.common.io.ByteStreams.createBuffer:()[B
            astore 3 /* buf2 */
        start local 3 // byte[] buf2
         3: .line 342
            invokestatic com.google.common.io.Closer.create:()Lcom/google/common/io/Closer;
            astore 4 /* closer */
        start local 4 // com.google.common.io.Closer closer
         4: .line 344
            aload 4 /* closer */
            aload 0 /* this */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 5 /* in1 */
        start local 5 // java.io.InputStream in1
         5: .line 345
            aload 4 /* closer */
            aload 1 /* other */
            invokevirtual com.google.common.io.ByteSource.openStream:()Ljava/io/InputStream;
            invokevirtual com.google.common.io.Closer.register:(Ljava/io/Closeable;)Ljava/io/Closeable;
            checkcast java.io.InputStream
            astore 6 /* in2 */
        start local 6 // java.io.InputStream in2
         6: .line 347
      StackMap locals: com.google.common.io.ByteSource com.google.common.io.ByteSource byte[] byte[] com.google.common.io.Closer java.io.InputStream java.io.InputStream
      StackMap stack:
            aload 5 /* in1 */
            aload 2 /* buf1 */
            iconst_0
            aload 2 /* buf1 */
            arraylength
            invokestatic com.google.common.io.ByteStreams.read:(Ljava/io/InputStream;[BII)I
            istore 7 /* read1 */
        start local 7 // int read1
         7: .line 348
            aload 6 /* in2 */
            aload 3 /* buf2 */
            iconst_0
            aload 3 /* buf2 */
            arraylength
            invokestatic com.google.common.io.ByteStreams.read:(Ljava/io/InputStream;[BII)I
            istore 8 /* read2 */
        start local 8 // int read2
         8: .line 349
            iload 7 /* read1 */
            iload 8 /* read2 */
            if_icmpne 9
            aload 2 /* buf1 */
            aload 3 /* buf2 */
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifne 11
         9: .line 358
      StackMap locals: int int
      StackMap stack:
            aload 4 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        10: .line 350
            iconst_0
            ireturn
        11: .line 351
      StackMap locals:
      StackMap stack:
            iload 7 /* read1 */
            aload 2 /* buf1 */
            arraylength
            if_icmpeq 6
        12: .line 358
            aload 4 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        13: .line 352
            iconst_1
            ireturn
        end local 8 // int read2
        end local 7 // int read1
        end local 6 // java.io.InputStream in2
        end local 5 // java.io.InputStream in1
        14: .line 355
      StackMap locals: com.google.common.io.ByteSource com.google.common.io.ByteSource byte[] byte[] com.google.common.io.Closer
      StackMap stack: java.lang.Throwable
            astore 5 /* e */
        start local 5 // java.lang.Throwable e
        15: .line 356
            aload 4 /* closer */
            aload 5 /* e */
            invokevirtual com.google.common.io.Closer.rethrow:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 5 // java.lang.Throwable e
        16: .line 357
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        17: .line 358
            aload 4 /* closer */
            invokevirtual com.google.common.io.Closer.close:()V
        18: .line 359
            aload 9
            athrow
        end local 4 // com.google.common.io.Closer closer
        end local 3 // byte[] buf2
        end local 2 // byte[] buf1
        end local 1 // com.google.common.io.ByteSource other
        end local 0 // com.google.common.io.ByteSource this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lcom/google/common/io/ByteSource;
            0   19     1   other  Lcom/google/common/io/ByteSource;
            2   19     2    buf1  [B
            3   19     3    buf2  [B
            4   19     4  closer  Lcom/google/common/io/Closer;
            5   14     5     in1  Ljava/io/InputStream;
            6   14     6     in2  Ljava/io/InputStream;
            7   14     7   read1  I
            8   14     8   read2  I
           15   16     5       e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     9      14  Class java.lang.Throwable
          11    12      14  Class java.lang.Throwable
           4     9      16  any
          11    12      16  any
          14    16      16  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      other  

  public static com.google.common.io.ByteSource concat(java.lang.Iterable<? extends com.google.common.io.ByteSource>);
    descriptor: (Ljava/lang/Iterable;)Lcom/google/common/io/ByteSource;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Iterable sources
         0: .line 374
            new com.google.common.io.ByteSource$ConcatenatedByteSource
            dup
            aload 0 /* sources */
            invokespecial com.google.common.io.ByteSource$ConcatenatedByteSource.<init>:(Ljava/lang/Iterable;)V
            areturn
        end local 0 // java.lang.Iterable sources
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  sources  Ljava/lang/Iterable<+Lcom/google/common/io/ByteSource;>;
    Signature: (Ljava/lang/Iterable<+Lcom/google/common/io/ByteSource;>;)Lcom/google/common/io/ByteSource;
    MethodParameters:
         Name  Flags
      sources  

  public static com.google.common.io.ByteSource concat(java.util.Iterator<? extends com.google.common.io.ByteSource>);
    descriptor: (Ljava/util/Iterator;)Lcom/google/common/io/ByteSource;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.Iterator sources
         0: .line 396
            aload 0 /* sources */
            invokestatic com.google.common.collect.ImmutableList.copyOf:(Ljava/util/Iterator;)Lcom/google/common/collect/ImmutableList;
            invokestatic com.google.common.io.ByteSource.concat:(Ljava/lang/Iterable;)Lcom/google/common/io/ByteSource;
            areturn
        end local 0 // java.util.Iterator sources
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  sources  Ljava/util/Iterator<+Lcom/google/common/io/ByteSource;>;
    Signature: (Ljava/util/Iterator<+Lcom/google/common/io/ByteSource;>;)Lcom/google/common/io/ByteSource;
    MethodParameters:
         Name  Flags
      sources  

  public static com.google.common.io.ByteSource concat(com.google.common.io.ByteSource[]);
    descriptor: ([Lcom/google/common/io/ByteSource;)Lcom/google/common/io/ByteSource;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.io.ByteSource[] sources
         0: .line 412
            aload 0 /* sources */
            invokestatic com.google.common.collect.ImmutableList.copyOf:([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
            invokestatic com.google.common.io.ByteSource.concat:(Ljava/lang/Iterable;)Lcom/google/common/io/ByteSource;
            areturn
        end local 0 // com.google.common.io.ByteSource[] sources
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  sources  [Lcom/google/common/io/ByteSource;
    MethodParameters:
         Name  Flags
      sources  

  public static com.google.common.io.ByteSource wrap(byte[]);
    descriptor: ([B)Lcom/google/common/io/ByteSource;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // byte[] b
         0: .line 427
            new com.google.common.io.ByteSource$ByteArrayByteSource
            dup
            aload 0 /* b */
            invokespecial com.google.common.io.ByteSource$ByteArrayByteSource.<init>:([B)V
            areturn
        end local 0 // byte[] b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     b  [B
    MethodParameters:
      Name  Flags
      b     

  public static com.google.common.io.ByteSource empty();
    descriptor: ()Lcom/google/common/io/ByteSource;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 436
            getstatic com.google.common.io.ByteSource$EmptyByteSource.INSTANCE:Lcom/google/common/io/ByteSource$EmptyByteSource;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ByteSource.java"
NestMembers:
  com.google.common.io.ByteSource$AsCharSource  com.google.common.io.ByteSource$ByteArrayByteSource  com.google.common.io.ByteSource$ConcatenatedByteSource  com.google.common.io.ByteSource$EmptyByteSource  com.google.common.io.ByteSource$SlicedByteSource
InnerClasses:
  AsCharSource = com.google.common.io.ByteSource$AsCharSource of com.google.common.io.ByteSource
  private ByteArrayByteSource = com.google.common.io.ByteSource$ByteArrayByteSource of com.google.common.io.ByteSource
  private final ConcatenatedByteSource = com.google.common.io.ByteSource$ConcatenatedByteSource of com.google.common.io.ByteSource
  private final EmptyByteSource = com.google.common.io.ByteSource$EmptyByteSource of com.google.common.io.ByteSource
  private final SlicedByteSource = com.google.common.io.ByteSource$SlicedByteSource of com.google.common.io.ByteSource
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()