public final class org.hibernate.type.descriptor.java.DataHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.hibernate.type.descriptor.java.DataHelper
  super_class: java.lang.Object
{
  private static final int BUFFER_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4096

  private static final org.hibernate.internal.CoreMessageLogger LOG;
    descriptor: Lorg/hibernate/internal/CoreMessageLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 54
            ldc Lorg/hibernate/internal/CoreMessageLogger;
            ldc Lorg/hibernate/type/descriptor/java/DataHelper;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic org.jboss.logging.Logger.getMessageLogger:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
            checkcast org.hibernate.internal.CoreMessageLogger
            putstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.type.descriptor.java.DataHelper this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            return
        end local 0 // org.hibernate.type.descriptor.java.DataHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/hibernate/type/descriptor/java/DataHelper;

  public static boolean isNClob(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 57
            ldc Ljava/sql/NClob;
            aload 0 /* type */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ireturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Ljava/lang/Class;
    MethodParameters:
      Name  Flags
      type  final

  public static java.lang.String extractString(java.io.Reader);
    descriptor: (Ljava/io/Reader;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.io.Reader reader
         0: .line 69
            aload 0 /* reader */
            sipush 4096
            invokestatic org.hibernate.type.descriptor.java.DataHelper.extractString:(Ljava/io/Reader;I)Ljava/lang/String;
            areturn
        end local 0 // java.io.Reader reader
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  reader  Ljava/io/Reader;
    MethodParameters:
        Name  Flags
      reader  

  public static java.lang.String extractString(java.io.Reader, int);
    descriptor: (Ljava/io/Reader;I)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.io.Reader reader
        start local 1 // int lengthHint
         0: .line 83
            iload 1 /* lengthHint */
            invokestatic org.hibernate.type.descriptor.java.DataHelper.getSuggestedBufferSize:(I)I
            istore 2 /* bufferSize */
        start local 2 // int bufferSize
         1: .line 84
            new java.lang.StringBuilder
            dup
            iload 2 /* bufferSize */
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 3 /* stringBuilder */
        start local 3 // java.lang.StringBuilder stringBuilder
         2: .line 86
            iload 2 /* bufferSize */
            newarray 5
            astore 4 /* buffer */
        start local 4 // char[] buffer
         3: .line 88
      StackMap locals: int java.lang.StringBuilder char[]
      StackMap stack:
            aload 0 /* reader */
            aload 4 /* buffer */
            iconst_0
            iload 2 /* bufferSize */
            invokevirtual java.io.Reader.read:([CII)I
            istore 5 /* amountRead */
        start local 5 // int amountRead
         4: .line 89
            iload 5 /* amountRead */
            iconst_m1
            if_icmpne 6
         5: .line 90
            goto 16
         6: .line 92
      StackMap locals: int
      StackMap stack:
            aload 3 /* stringBuilder */
            aload 4 /* buffer */
            iconst_0
            iload 5 /* amountRead */
            invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
            pop
        end local 5 // int amountRead
         7: .line 87
            goto 3
        end local 4 // char[] buffer
         8: .line 95
      StackMap locals: java.io.Reader int int java.lang.StringBuilder
      StackMap stack: java.io.IOException
            astore 4 /* ioe */
        start local 4 // java.io.IOException ioe
         9: .line 96
            new org.hibernate.HibernateException
            dup
            ldc "IOException occurred reading text"
            aload 4 /* ioe */
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.IOException ioe
        10: .line 98
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        11: .line 100
            aload 0 /* reader */
            invokevirtual java.io.Reader.close:()V
        12: .line 101
            goto 15
        13: .line 102
      StackMap locals: java.io.Reader int int java.lang.StringBuilder top top java.lang.Throwable
      StackMap stack: java.io.IOException
            astore 7 /* e */
        start local 7 // java.io.IOException e
        14: .line 103
            getstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 7 /* e */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToCloseStream:(Ljava/io/IOException;)V
        end local 7 // java.io.IOException e
        15: .line 105
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        16: .line 100
      StackMap locals: java.io.Reader int int java.lang.StringBuilder
      StackMap stack:
            aload 0 /* reader */
            invokevirtual java.io.Reader.close:()V
        17: .line 101
            goto 20
        18: .line 102
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 7 /* e */
        start local 7 // java.io.IOException e
        19: .line 103
            getstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 7 /* e */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToCloseStream:(Ljava/io/IOException;)V
        end local 7 // java.io.IOException e
        20: .line 106
      StackMap locals:
      StackMap stack:
            aload 3 /* stringBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.StringBuilder stringBuilder
        end local 2 // int bufferSize
        end local 1 // int lengthHint
        end local 0 // java.io.Reader reader
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0         reader  Ljava/io/Reader;
            0   21     1     lengthHint  I
            1   21     2     bufferSize  I
            2   21     3  stringBuilder  Ljava/lang/StringBuilder;
            3    8     4         buffer  [C
            4    7     5     amountRead  I
            9   10     4            ioe  Ljava/io/IOException;
           14   15     7              e  Ljava/io/IOException;
           19   20     7              e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     8       8  Class java.io.IOException
           2    10      10  any
          11    12      13  Class java.io.IOException
          16    17      18  Class java.io.IOException
    MethodParameters:
            Name  Flags
      reader      
      lengthHint  

  private static java.lang.String extractString(java.io.Reader, long, int);
    descriptor: (Ljava/io/Reader;JI)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // java.io.Reader characterStream
        start local 1 // long start
        start local 3 // int length
         0: .line 119
            iload 3 /* length */
            ifne 2
         1: .line 120
            ldc ""
            areturn
         2: .line 122
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            iload 3 /* length */
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 4 /* stringBuilder */
        start local 4 // java.lang.StringBuilder stringBuilder
         3: .line 124
            aload 0 /* characterStream */
            lload 1 /* start */
            invokevirtual java.io.Reader.skip:(J)J
            lstore 5 /* skipped */
        start local 5 // long skipped
         4: .line 125
            lload 5 /* skipped */
            lload 1 /* start */
            lcmp
            ifeq 6
         5: .line 126
            new org.hibernate.HibernateException
            dup
            ldc "Unable to skip needed bytes"
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 128
      StackMap locals: java.lang.StringBuilder long
      StackMap stack:
            iload 3 /* length */
            invokestatic org.hibernate.type.descriptor.java.DataHelper.getSuggestedBufferSize:(I)I
            istore 7 /* bufferSize */
        start local 7 // int bufferSize
         7: .line 129
            iload 7 /* bufferSize */
            newarray 5
            astore 8 /* buffer */
        start local 8 // char[] buffer
         8: .line 130
            iconst_0
            istore 9 /* charsRead */
        start local 9 // int charsRead
         9: .line 132
      StackMap locals: int char[] int
      StackMap stack:
            aload 0 /* characterStream */
            aload 8 /* buffer */
            iconst_0
            iload 7 /* bufferSize */
            invokevirtual java.io.Reader.read:([CII)I
            istore 10 /* amountRead */
        start local 10 // int amountRead
        10: .line 133
            iload 10 /* amountRead */
            iconst_m1
            if_icmpne 12
        11: .line 134
            goto 20
        12: .line 136
      StackMap locals: int
      StackMap stack:
            aload 4 /* stringBuilder */
            aload 8 /* buffer */
            iconst_0
            iload 10 /* amountRead */
            invokevirtual java.lang.StringBuilder.append:([CII)Ljava/lang/StringBuilder;
            pop
        13: .line 137
            iload 10 /* amountRead */
            iload 7 /* bufferSize */
            if_icmpge 15
        14: .line 139
            goto 20
        15: .line 141
      StackMap locals:
      StackMap stack:
            iload 9 /* charsRead */
            iload 10 /* amountRead */
            iadd
            istore 9 /* charsRead */
        16: .line 142
            iload 9 /* charsRead */
            iload 3 /* length */
            if_icmplt 9
        end local 10 // int amountRead
        end local 9 // int charsRead
        end local 8 // char[] buffer
        end local 7 // int bufferSize
        end local 5 // long skipped
        17: .line 146
            goto 20
        18: .line 147
      StackMap locals: java.io.Reader long int java.lang.StringBuilder
      StackMap stack: java.io.IOException
            astore 5 /* ioe */
        start local 5 // java.io.IOException ioe
        19: .line 148
            new org.hibernate.HibernateException
            dup
            ldc "IOException occurred reading a binary value"
            aload 5 /* ioe */
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException ioe
        20: .line 150
      StackMap locals:
      StackMap stack:
            aload 4 /* stringBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // java.lang.StringBuilder stringBuilder
        end local 3 // int length
        end local 1 // long start
        end local 0 // java.io.Reader characterStream
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   21     0  characterStream  Ljava/io/Reader;
            0   21     1            start  J
            0   21     3           length  I
            3   21     4    stringBuilder  Ljava/lang/StringBuilder;
            4   17     5          skipped  J
            7   17     7       bufferSize  I
            8   17     8           buffer  [C
            9   17     9        charsRead  I
           10   17    10       amountRead  I
           19   20     5              ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3    17      18  Class java.io.IOException
    MethodParameters:
                 Name  Flags
      characterStream  
      start            
      length           

  public static java.lang.Object subStream(java.io.Reader, long, int);
    descriptor: (Ljava/io/Reader;JI)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // java.io.Reader characterStream
        start local 1 // long start
        start local 3 // int length
         0: .line 163
            new java.io.StringReader
            dup
            aload 0 /* characterStream */
            lload 1 /* start */
            iload 3 /* length */
            invokestatic org.hibernate.type.descriptor.java.DataHelper.extractString:(Ljava/io/Reader;JI)Ljava/lang/String;
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            areturn
        end local 3 // int length
        end local 1 // long start
        end local 0 // java.io.Reader characterStream
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0  characterStream  Ljava/io/Reader;
            0    1     1            start  J
            0    1     3           length  I
    MethodParameters:
                 Name  Flags
      characterStream  
      start            
      length           

  public static byte[] extractBytes(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.io.InputStream inputStream
         0: .line 174
            ldc Lorg/hibernate/engine/jdbc/BinaryStream;
            aload 0 /* inputStream */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 175
            aload 0 /* inputStream */
            checkcast org.hibernate.engine.jdbc.BinaryStream
            invokeinterface org.hibernate.engine.jdbc.BinaryStream.getBytes:()[B
            areturn
         2: .line 179
      StackMap locals:
      StackMap stack:
            new java.io.ByteArrayOutputStream
            dup
            sipush 4096
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 1 /* outputStream */
        start local 1 // java.io.ByteArrayOutputStream outputStream
         3: .line 181
            sipush 4096
            newarray 8
            astore 2 /* buffer */
        start local 2 // byte[] buffer
         4: .line 183
      StackMap locals: java.io.ByteArrayOutputStream byte[]
      StackMap stack:
            aload 0 /* inputStream */
            aload 2 /* buffer */
            invokevirtual java.io.InputStream.read:([B)I
            istore 3 /* amountRead */
        start local 3 // int amountRead
         5: .line 184
            iload 3 /* amountRead */
            iconst_m1
            if_icmpne 7
         6: .line 185
            goto 21
         7: .line 187
      StackMap locals: int
      StackMap stack:
            aload 1 /* outputStream */
            aload 2 /* buffer */
            iconst_0
            iload 3 /* amountRead */
            invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
        end local 3 // int amountRead
         8: .line 182
            goto 4
        end local 2 // byte[] buffer
         9: .line 190
      StackMap locals: java.io.InputStream java.io.ByteArrayOutputStream
      StackMap stack: java.io.IOException
            astore 2 /* ioe */
        start local 2 // java.io.IOException ioe
        10: .line 191
            new org.hibernate.HibernateException
            dup
            ldc "IOException occurred reading a binary value"
            aload 2 /* ioe */
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException ioe
        11: .line 193
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        12: .line 195
            aload 0 /* inputStream */
            invokevirtual java.io.InputStream.close:()V
        13: .line 196
            goto 16
        14: .line 197
      StackMap locals: java.io.InputStream java.io.ByteArrayOutputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        15: .line 198
            getstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 5 /* e */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToCloseInputStream:(Ljava/io/IOException;)V
        end local 5 // java.io.IOException e
        16: .line 201
      StackMap locals:
      StackMap stack:
            aload 1 /* outputStream */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
        17: .line 202
            goto 20
        18: .line 203
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        19: .line 204
            getstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 5 /* e */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToCloseOutputStream:(Ljava/io/IOException;)V
        end local 5 // java.io.IOException e
        20: .line 206
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        21: .line 195
      StackMap locals: java.io.InputStream java.io.ByteArrayOutputStream
      StackMap stack:
            aload 0 /* inputStream */
            invokevirtual java.io.InputStream.close:()V
        22: .line 196
            goto 25
        23: .line 197
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        24: .line 198
            getstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 5 /* e */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToCloseInputStream:(Ljava/io/IOException;)V
        end local 5 // java.io.IOException e
        25: .line 201
      StackMap locals:
      StackMap stack:
            aload 1 /* outputStream */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
        26: .line 202
            goto 29
        27: .line 203
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        28: .line 204
            getstatic org.hibernate.type.descriptor.java.DataHelper.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 5 /* e */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToCloseOutputStream:(Ljava/io/IOException;)V
        end local 5 // java.io.IOException e
        29: .line 207
      StackMap locals:
      StackMap stack:
            aload 1 /* outputStream */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            areturn
        end local 1 // java.io.ByteArrayOutputStream outputStream
        end local 0 // java.io.InputStream inputStream
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   30     0   inputStream  Ljava/io/InputStream;
            3   30     1  outputStream  Ljava/io/ByteArrayOutputStream;
            4    9     2        buffer  [B
            5    8     3    amountRead  I
           10   11     2           ioe  Ljava/io/IOException;
           15   16     5             e  Ljava/io/IOException;
           24   25     5             e  Ljava/io/IOException;
           19   20     5             e  Ljava/io/IOException;
           28   29     5             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     9       9  Class java.io.IOException
           3    11      11  any
          12    13      14  Class java.io.IOException
          16    17      18  Class java.io.IOException
          21    22      23  Class java.io.IOException
          25    26      27  Class java.io.IOException
    MethodParameters:
             Name  Flags
      inputStream  

  public static byte[] extractBytes(java.io.InputStream, long, int);
    descriptor: (Ljava/io/InputStream;JI)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // java.io.InputStream inputStream
        start local 1 // long start
        start local 3 // int length
         0: .line 220
            ldc Lorg/hibernate/engine/jdbc/BinaryStream;
            aload 0 /* inputStream */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 6
            ldc 2147483647
            lload 1 /* start */
            lcmp
            ifle 6
         1: .line 221
            aload 0 /* inputStream */
            checkcast org.hibernate.engine.jdbc.BinaryStream
            invokeinterface org.hibernate.engine.jdbc.BinaryStream.getBytes:()[B
            astore 4 /* data */
        start local 4 // byte[] data
         2: .line 222
            iload 3 /* length */
            aload 4 /* data */
            arraylength
            invokestatic java.lang.Math.min:(II)I
            istore 5 /* size */
        start local 5 // int size
         3: .line 223
            iload 5 /* size */
            newarray 8
            astore 6 /* result */
        start local 6 // byte[] result
         4: .line 224
            aload 4 /* data */
            lload 1 /* start */
            l2i
            aload 6 /* result */
            iconst_0
            iload 5 /* size */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 225
            aload 6 /* result */
            areturn
        end local 6 // byte[] result
        end local 5 // int size
        end local 4 // byte[] data
         6: .line 228
      StackMap locals:
      StackMap stack:
            new java.io.ByteArrayOutputStream
            dup
            iload 3 /* length */
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 4 /* outputStream */
        start local 4 // java.io.ByteArrayOutputStream outputStream
         7: .line 230
            aload 0 /* inputStream */
            lload 1 /* start */
            invokevirtual java.io.InputStream.skip:(J)J
            lstore 5 /* skipped */
        start local 5 // long skipped
         8: .line 231
            lload 5 /* skipped */
            lload 1 /* start */
            lcmp
            ifeq 10
         9: .line 232
            new org.hibernate.HibernateException
            dup
            ldc "Unable to skip needed bytes"
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 234
      StackMap locals: java.io.ByteArrayOutputStream long
      StackMap stack:
            sipush 4096
            newarray 8
            astore 7 /* buffer */
        start local 7 // byte[] buffer
        11: .line 235
            iconst_0
            istore 8 /* bytesRead */
        start local 8 // int bytesRead
        12: .line 237
      StackMap locals: byte[] int
      StackMap stack:
            aload 0 /* inputStream */
            aload 7 /* buffer */
            invokevirtual java.io.InputStream.read:([B)I
            istore 9 /* amountRead */
        start local 9 // int amountRead
        13: .line 238
            iload 9 /* amountRead */
            iconst_m1
            if_icmpne 15
        14: .line 239
            goto 23
        15: .line 241
      StackMap locals: int
      StackMap stack:
            aload 4 /* outputStream */
            aload 7 /* buffer */
            iconst_0
            iload 9 /* amountRead */
            invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
        16: .line 242
            iload 9 /* amountRead */
            aload 7 /* buffer */
            arraylength
            if_icmpge 18
        17: .line 244
            goto 23
        18: .line 246
      StackMap locals:
      StackMap stack:
            iload 8 /* bytesRead */
            iload 9 /* amountRead */
            iadd
            istore 8 /* bytesRead */
        19: .line 247
            iload 8 /* bytesRead */
            iload 3 /* length */
            if_icmplt 12
        end local 9 // int amountRead
        end local 8 // int bytesRead
        end local 7 // byte[] buffer
        end local 5 // long skipped
        20: .line 251
            goto 23
        21: .line 252
      StackMap locals: java.io.InputStream long int java.io.ByteArrayOutputStream
      StackMap stack: java.io.IOException
            astore 5 /* ioe */
        start local 5 // java.io.IOException ioe
        22: .line 253
            new org.hibernate.HibernateException
            dup
            ldc "IOException occurred reading a binary value"
            aload 5 /* ioe */
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException ioe
        23: .line 255
      StackMap locals:
      StackMap stack:
            aload 4 /* outputStream */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            areturn
        end local 4 // java.io.ByteArrayOutputStream outputStream
        end local 3 // int length
        end local 1 // long start
        end local 0 // java.io.InputStream inputStream
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   24     0   inputStream  Ljava/io/InputStream;
            0   24     1         start  J
            0   24     3        length  I
            2    6     4          data  [B
            3    6     5          size  I
            4    6     6        result  [B
            7   24     4  outputStream  Ljava/io/ByteArrayOutputStream;
            8   20     5       skipped  J
           11   20     7        buffer  [B
           12   20     8     bytesRead  I
           13   20     9    amountRead  I
           22   23     5           ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7    20      21  Class java.io.IOException
    MethodParameters:
             Name  Flags
      inputStream  
      start        
      length       

  public static java.io.InputStream subStream(java.io.InputStream, long, int);
    descriptor: (Ljava/io/InputStream;JI)Ljava/io/InputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // java.io.InputStream inputStream
        start local 1 // long start
        start local 3 // int length
         0: .line 268
            new org.hibernate.engine.jdbc.internal.BinaryStreamImpl
            dup
            aload 0 /* inputStream */
            lload 1 /* start */
            iload 3 /* length */
            invokestatic org.hibernate.type.descriptor.java.DataHelper.extractBytes:(Ljava/io/InputStream;JI)[B
            invokespecial org.hibernate.engine.jdbc.internal.BinaryStreamImpl.<init>:([B)V
            areturn
        end local 3 // int length
        end local 1 // long start
        end local 0 // java.io.InputStream inputStream
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  inputStream  Ljava/io/InputStream;
            0    1     1        start  J
            0    1     3       length  I
    MethodParameters:
             Name  Flags
      inputStream  
      start        
      length       

  public static java.lang.String extractString(java.sql.Clob);
    descriptor: (Ljava/sql/Clob;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.sql.Clob value
         0: .line 280
            aload 0 /* value */
            invokeinterface java.sql.Clob.getCharacterStream:()Ljava/io/Reader;
            astore 1 /* characterStream */
        start local 1 // java.io.Reader characterStream
         1: .line 281
            aload 0 /* value */
            invokestatic org.hibernate.type.descriptor.java.DataHelper.determineLengthForBufferSizing:(Ljava/sql/Clob;)J
            lstore 2 /* length */
        start local 2 // long length
         2: .line 282
            lload 2 /* length */
            ldc 2147483647
            lcmp
            ifle 4
         3: .line 283
            aload 1 /* characterStream */
            ldc 2147483647
            invokestatic org.hibernate.type.descriptor.java.DataHelper.extractString:(Ljava/io/Reader;I)Ljava/lang/String;
            goto 5
         4: .line 284
      StackMap locals: java.io.Reader long
      StackMap stack:
            aload 1 /* characterStream */
            lload 2 /* length */
            l2i
            invokestatic org.hibernate.type.descriptor.java.DataHelper.extractString:(Ljava/io/Reader;I)Ljava/lang/String;
         5: .line 282
      StackMap locals:
      StackMap stack: java.lang.String
            areturn
        end local 2 // long length
        end local 1 // java.io.Reader characterStream
         6: .line 286
      StackMap locals: java.sql.Clob
      StackMap stack: java.sql.SQLException
            astore 1 /* e */
        start local 1 // java.sql.SQLException e
         7: .line 287
            new org.hibernate.HibernateException
            dup
            ldc "Unable to access lob stream"
            aload 1 /* e */
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.sql.SQLException e
        end local 0 // java.sql.Clob value
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0            value  Ljava/sql/Clob;
            1    6     1  characterStream  Ljava/io/Reader;
            2    6     2           length  J
            7    8     1                e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           0     5       6  Class java.sql.SQLException
    MethodParameters:
       Name  Flags
      value  final

  private static long determineLengthForBufferSizing(java.sql.Clob);
    descriptor: (Ljava/sql/Clob;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.sql.Clob value
         0: .line 302
            aload 0 /* value */
            invokeinterface java.sql.Clob.length:()J
         1: lreturn
         2: .line 304
      StackMap locals:
      StackMap stack: java.sql.SQLFeatureNotSupportedException
            pop
         3: .line 305
            ldc 4096
            lreturn
        end local 0 // java.sql.Clob value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  value  Ljava/sql/Clob;
      Exception table:
        from    to  target  type
           0     1       2  Class java.sql.SQLFeatureNotSupportedException
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
       Name  Flags
      value  

  private static int getSuggestedBufferSize(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int lengthHint
         0: .line 317
            iconst_1
            iload 0 /* lengthHint */
            sipush 4096
            invokestatic java.lang.Math.min:(II)I
            invokestatic java.lang.Math.max:(II)I
            ireturn
        end local 0 // int lengthHint
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  lengthHint  I
    MethodParameters:
            Name  Flags
      lengthHint  final
}
SourceFile: "DataHelper.java"