public class org.hibernate.engine.jdbc.ResultSetWrapperProxy implements java.lang.reflect.InvocationHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.engine.jdbc.ResultSetWrapperProxy
  super_class: java.lang.Object
{
  private static final org.hibernate.internal.CoreMessageLogger LOG;
    descriptor: Lorg/hibernate/internal/CoreMessageLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.hibernate.engine.jdbc.spi.SqlExceptionHelper SQL_EXCEPTION_HELPER;
    descriptor: Lorg/hibernate/engine/jdbc/spi/SqlExceptionHelper;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.sql.ResultSet rs;
    descriptor: Ljava/sql/ResultSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.hibernate.engine.jdbc.ColumnNameCache columnNameCache;
    descriptor: Lorg/hibernate/engine/jdbc/ColumnNameCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 30
            ldc Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            invokestatic org.hibernate.internal.CoreLogging.messageLogger:(Ljava/lang/Class;)Lorg/hibernate/internal/CoreMessageLogger;
            putstatic org.hibernate.engine.jdbc.ResultSetWrapperProxy.LOG:Lorg/hibernate/internal/CoreMessageLogger;
         1: .line 32
            new org.hibernate.engine.jdbc.spi.SqlExceptionHelper
            dup
            iconst_0
            invokespecial org.hibernate.engine.jdbc.spi.SqlExceptionHelper.<init>:(Z)V
            putstatic org.hibernate.engine.jdbc.ResultSetWrapperProxy.SQL_EXCEPTION_HELPER:Lorg/hibernate/engine/jdbc/spi/SqlExceptionHelper;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.sql.ResultSet, org.hibernate.engine.jdbc.ColumnNameCache);
    descriptor: (Ljava/sql/ResultSet;Lorg/hibernate/engine/jdbc/ColumnNameCache;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.sql.ResultSet rs
        start local 2 // org.hibernate.engine.jdbc.ColumnNameCache columnNameCache
         0: .line 37
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 38
            aload 0 /* this */
            aload 1 /* rs */
            putfield org.hibernate.engine.jdbc.ResultSetWrapperProxy.rs:Ljava/sql/ResultSet;
         2: .line 39
            aload 0 /* this */
            aload 2 /* columnNameCache */
            putfield org.hibernate.engine.jdbc.ResultSetWrapperProxy.columnNameCache:Lorg/hibernate/engine/jdbc/ColumnNameCache;
         3: .line 40
            return
        end local 2 // org.hibernate.engine.jdbc.ColumnNameCache columnNameCache
        end local 1 // java.sql.ResultSet rs
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0    4     1               rs  Ljava/sql/ResultSet;
            0    4     2  columnNameCache  Lorg/hibernate/engine/jdbc/ColumnNameCache;
    MethodParameters:
                 Name  Flags
      rs               
      columnNameCache  

  public static java.sql.ResultSet generateProxy(java.sql.ResultSet, org.hibernate.engine.jdbc.ColumnNameCache, org.hibernate.service.ServiceRegistry);
    descriptor: (Ljava/sql/ResultSet;Lorg/hibernate/engine/jdbc/ColumnNameCache;Lorg/hibernate/service/ServiceRegistry;)Ljava/sql/ResultSet;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // java.sql.ResultSet resultSet
        start local 1 // org.hibernate.engine.jdbc.ColumnNameCache columnNameCache
        start local 2 // org.hibernate.service.ServiceRegistry serviceRegistry
         0: .line 55
            aload 2 /* serviceRegistry */
            ldc Lorg/hibernate/boot/registry/classloading/spi/ClassLoaderService;
            invokeinterface org.hibernate.service.ServiceRegistry.getService:(Ljava/lang/Class;)Lorg/hibernate/service/Service;
            checkcast org.hibernate.boot.registry.classloading.spi.ClassLoaderService
         1: .line 56
            new org.hibernate.engine.jdbc.ResultSetWrapperProxy
            dup
            aload 0 /* resultSet */
            aload 1 /* columnNameCache */
            invokespecial org.hibernate.engine.jdbc.ResultSetWrapperProxy.<init>:(Ljava/sql/ResultSet;Lorg/hibernate/engine/jdbc/ColumnNameCache;)V
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
         2: .line 57
            ldc Ljava/sql/ResultSet;
            aastore
         3: .line 55
            invokeinterface org.hibernate.boot.registry.classloading.spi.ClassLoaderService.generateProxy:(Ljava/lang/reflect/InvocationHandler;[Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.sql.ResultSet
            areturn
        end local 2 // org.hibernate.service.ServiceRegistry serviceRegistry
        end local 1 // org.hibernate.engine.jdbc.ColumnNameCache columnNameCache
        end local 0 // java.sql.ResultSet resultSet
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0        resultSet  Ljava/sql/ResultSet;
            0    4     1  columnNameCache  Lorg/hibernate/engine/jdbc/ColumnNameCache;
            0    4     2  serviceRegistry  Lorg/hibernate/service/ServiceRegistry;
    MethodParameters:
                 Name  Flags
      resultSet        
      columnNameCache  
      serviceRegistry  

  public java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.lang.Object proxy
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] args
         0: .line 63
            ldc "findColumn"
            aload 2 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 64
            aload 0 /* this */
            aload 3 /* args */
            iconst_0
            aaload
            checkcast java.lang.String
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.findColumn:(Ljava/lang/String;)Ljava/lang/Integer;
            areturn
         2: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* method */
            aload 3 /* args */
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.isFirstArgColumnLabel:(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Z
            ifeq 18
         3: .line 69
            aload 0 /* this */
            aload 3 /* args */
            iconst_0
            aaload
            checkcast java.lang.String
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.findColumn:(Ljava/lang/String;)Ljava/lang/Integer;
            astore 4 /* columnIndex */
        start local 4 // java.lang.Integer columnIndex
         4: .line 70
            aload 0 /* this */
         5: .line 71
            aload 0 /* this */
            aload 2 /* method */
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.locateCorrespondingColumnIndexMethod:(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
         6: .line 72
            aload 0 /* this */
            aload 3 /* args */
            aload 4 /* columnIndex */
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.buildColumnIndexMethodArgs:([Ljava/lang/Object;Ljava/lang/Integer;)[Ljava/lang/Object;
         7: .line 70
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.invokeMethod:(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
         8: areturn
        end local 4 // java.lang.Integer columnIndex
         9: .line 75
      StackMap locals:
      StackMap stack: java.sql.SQLException
            astore 4 /* ex */
        start local 4 // java.sql.SQLException ex
        10: .line 76
            new java.lang.StringBuilder
            dup
            ldc "Exception getting column index for column: ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* args */
            iconst_0
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        11: .line 77
            ldc "].\nReverting to using: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* args */
            iconst_0
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        12: .line 78
            ldc "] as first argument for method: ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        13: .line 76
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* msg */
        start local 5 // java.lang.String msg
        14: .line 79
            getstatic org.hibernate.engine.jdbc.ResultSetWrapperProxy.SQL_EXCEPTION_HELPER:Lorg/hibernate/engine/jdbc/spi/SqlExceptionHelper;
            aload 4 /* ex */
            aload 5 /* msg */
            invokevirtual org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logExceptions:(Ljava/sql/SQLException;Ljava/lang/String;)V
        end local 5 // java.lang.String msg
        end local 4 // java.sql.SQLException ex
        15: goto 18
        16: .line 81
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
        17: .line 82
            getstatic org.hibernate.engine.jdbc.ResultSetWrapperProxy.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            aload 2 /* method */
            invokeinterface org.hibernate.internal.CoreMessageLogger.unableToSwitchToMethodUsingColumnIndex:(Ljava/lang/reflect/Method;)V
        18: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* method */
            aload 3 /* args */
            invokevirtual org.hibernate.engine.jdbc.ResultSetWrapperProxy.invokeMethod:(Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.Object proxy
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0         this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0   19     1        proxy  Ljava/lang/Object;
            0   19     2       method  Ljava/lang/reflect/Method;
            0   19     3         args  [Ljava/lang/Object;
            4    9     4  columnIndex  Ljava/lang/Integer;
           10   15     4           ex  Ljava/sql/SQLException;
           14   15     5          msg  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3     8       9  Class java.sql.SQLException
           3     8      16  Class java.lang.NoSuchMethodException
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
        Name  Flags
      proxy   
      method  
      args    

  private java.lang.Integer findColumn(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Integer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.lang.String columnName
         0: .line 96
            aload 0 /* this */
            getfield org.hibernate.engine.jdbc.ResultSetWrapperProxy.columnNameCache:Lorg/hibernate/engine/jdbc/ColumnNameCache;
            aload 1 /* columnName */
            aload 0 /* this */
            getfield org.hibernate.engine.jdbc.ResultSetWrapperProxy.rs:Ljava/sql/ResultSet;
            invokevirtual org.hibernate.engine.jdbc.ColumnNameCache.getIndexForColumnName:(Ljava/lang/String;Ljava/sql/ResultSet;)Ljava/lang/Integer;
            areturn
        end local 1 // java.lang.String columnName
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0    1     1  columnName  Ljava/lang/String;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
            Name  Flags
      columnName  

  private boolean isFirstArgColumnLabel(java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/reflect/Method;[Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.lang.reflect.Method method
        start local 2 // java.lang.Object[] args
         0: .line 101
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            ldc "get"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 2
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            ldc "update"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 2
         1: .line 102
            iconst_0
            ireturn
         2: .line 106
      StackMap locals:
      StackMap stack:
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterCount:()I
            ifle 3
            aload 2 /* args */
            arraylength
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterCount:()I
            if_icmpeq 4
         3: .line 107
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 112
      StackMap locals:
      StackMap stack:
            ldc Ljava/lang/String;
            aload 2 /* args */
            iconst_0
            aaload
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 5
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            iconst_0
            aaload
            ldc Ljava/lang/String;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 6
         5: .line 113
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         6: .line 116
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0    7     1  method  Ljava/lang/reflect/Method;
            0    7     2    args  [Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      method  
      args    

  private java.lang.reflect.Method locateCorrespondingColumnIndexMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.lang.reflect.Method columnNameMethod
         0: .line 128
            aload 1 /* columnNameMethod */
            invokevirtual java.lang.reflect.Method.getParameterCount:()I
            anewarray java.lang.Class
            astore 2 /* actualParameterTypes */
        start local 2 // java.lang.Class[] actualParameterTypes
         1: .line 129
            aload 2 /* actualParameterTypes */
            iconst_0
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
         2: .line 131
            aload 1 /* columnNameMethod */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
         3: .line 132
            iconst_1
         4: .line 133
            aload 2 /* actualParameterTypes */
         5: .line 134
            iconst_1
         6: .line 135
            aload 1 /* columnNameMethod */
            invokevirtual java.lang.reflect.Method.getParameterCount:()I
            iconst_1
            isub
         7: .line 130
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 137
            aload 1 /* columnNameMethod */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            aload 1 /* columnNameMethod */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 2 /* actualParameterTypes */
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            areturn
        end local 2 // java.lang.Class[] actualParameterTypes
        end local 1 // java.lang.reflect.Method columnNameMethod
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    9     0                  this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0    9     1      columnNameMethod  Ljava/lang/reflect/Method;
            1    9     2  actualParameterTypes  [Ljava/lang/Class;
    Exceptions:
      throws java.lang.NoSuchMethodException
    MethodParameters:
                  Name  Flags
      columnNameMethod  

  private java.lang.Object[] buildColumnIndexMethodArgs(java.lang.Object[], java.lang.Integer);
    descriptor: ([Ljava/lang/Object;Ljava/lang/Integer;)[Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.lang.Object[] incomingArgs
        start local 2 // java.lang.Integer columnIndex
         0: .line 141
            aload 1 /* incomingArgs */
            arraylength
            anewarray java.lang.Object
            astore 3 /* actualArgs */
        start local 3 // java.lang.Object[] actualArgs
         1: .line 142
            aload 3 /* actualArgs */
            iconst_0
            aload 2 /* columnIndex */
            aastore
         2: .line 143
            aload 1 /* incomingArgs */
            iconst_1
            aload 3 /* actualArgs */
            iconst_1
            aload 1 /* incomingArgs */
            arraylength
            iconst_1
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 144
            aload 3 /* actualArgs */
            areturn
        end local 3 // java.lang.Object[] actualArgs
        end local 2 // java.lang.Integer columnIndex
        end local 1 // java.lang.Object[] incomingArgs
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0    4     1  incomingArgs  [Ljava/lang/Object;
            0    4     2   columnIndex  Ljava/lang/Integer;
            1    4     3    actualArgs  [Ljava/lang/Object;
    MethodParameters:
              Name  Flags
      incomingArgs  
      columnIndex   

  private java.lang.Object invokeMethod(java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
        start local 1 // java.lang.reflect.Method method
        start local 2 // java.lang.Object[] args
         0: .line 149
            aload 1 /* method */
            aload 0 /* this */
            getfield org.hibernate.engine.jdbc.ResultSetWrapperProxy.rs:Ljava/sql/ResultSet;
            aload 2 /* args */
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
         1: areturn
         2: .line 151
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            astore 3 /* e */
        start local 3 // java.lang.reflect.InvocationTargetException e
         3: .line 152
            aload 3 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            athrow
        end local 3 // java.lang.reflect.InvocationTargetException e
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.hibernate.engine.jdbc.ResultSetWrapperProxy this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/hibernate/engine/jdbc/ResultSetWrapperProxy;
            0    4     1  method  Ljava/lang/reflect/Method;
            0    4     2    args  [Ljava/lang/Object;
            3    4     3       e  Ljava/lang/reflect/InvocationTargetException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.reflect.InvocationTargetException
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
        Name  Flags
      method  
      args    
}
SourceFile: "ResultSetWrapperProxy.java"