public class org.hibernate.query.procedure.internal.ProcedureParameterImpl<T> extends org.hibernate.query.internal.QueryParameterImpl<T> implements org.hibernate.query.procedure.spi.ProcedureParameterImplementor<T>, org.hibernate.procedure.ParameterRegistration<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.query.procedure.internal.ProcedureParameterImpl
  super_class: org.hibernate.query.internal.QueryParameterImpl
{
  private static final org.jboss.logging.Logger log;
    descriptor: Lorg/jboss/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final org.hibernate.procedure.internal.ProcedureCallImpl procedureCall;
    descriptor: Lorg/hibernate/procedure/internal/ProcedureCallImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Integer position;
    descriptor: Ljava/lang/Integer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final javax.persistence.ParameterMode mode;
    descriptor: Ljavax/persistence/ParameterMode;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Class<T> javaType;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<TT;>;

  private int[] sqlTypes;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

  private boolean passNullsEnabled;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private int startIndex;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$javax$persistence$TemporalType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            ldc Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl;
            invokestatic org.jboss.logging.Logger.getLogger:(Ljava/lang/Class;)Lorg/jboss/logging/Logger;
            putstatic org.hibernate.query.procedure.internal.ProcedureParameterImpl.log:Lorg/jboss/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.hibernate.procedure.internal.ProcedureCallImpl, java.lang.String, javax.persistence.ParameterMode, java.lang.Class<T>, org.hibernate.type.Type, );
    descriptor: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;Lorg/hibernate/type/Type;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=7
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        start local 2 // java.lang.String name
        start local 3 // javax.persistence.ParameterMode mode
        start local 4 // java.lang.Class javaType
        start local 5 // org.hibernate.type.Type hibernateType
        start local 6 // boolean initialPassNullsSetting
         0: .line 62
            aload 0 /* this */
            aload 5 /* hibernateType */
            invokespecial org.hibernate.query.internal.QueryParameterImpl.<init>:(Lorg/hibernate/type/Type;)V
         1: .line 63
            aload 0 /* this */
            aload 1 /* procedureCall */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
         2: .line 64
            aload 0 /* this */
            aload 2 /* name */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.name:Ljava/lang/String;
         3: .line 65
            aload 0 /* this */
            aconst_null
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.position:Ljava/lang/Integer;
         4: .line 66
            aload 0 /* this */
            aload 3 /* mode */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
         5: .line 67
            aload 0 /* this */
            aload 4 /* javaType */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.javaType:Ljava/lang/Class;
         6: .line 68
            aload 0 /* this */
            iload 6 /* initialPassNullsSetting */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.passNullsEnabled:Z
         7: .line 70
            aload 0 /* this */
            aload 5 /* hibernateType */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.setHibernateType:(Lorg/hibernate/type/Type;)V
         8: .line 71
            return
        end local 6 // boolean initialPassNullsSetting
        end local 5 // org.hibernate.type.Type hibernateType
        end local 4 // java.lang.Class javaType
        end local 3 // javax.persistence.ParameterMode mode
        end local 2 // java.lang.String name
        end local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    9     0                     this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0    9     1            procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    9     2                     name  Ljava/lang/String;
            0    9     3                     mode  Ljavax/persistence/ParameterMode;
            0    9     4                 javaType  Ljava/lang/Class<TT;>;
            0    9     5            hibernateType  Lorg/hibernate/type/Type;
            0    9     6  initialPassNullsSetting  Z
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;Lorg/hibernate/type/Type;Z)V
    MethodParameters:
                         Name  Flags
      procedureCall            
      name                     
      mode                     
      javaType                 
      hibernateType            
      initialPassNullsSetting  

  public void <init>(org.hibernate.procedure.internal.ProcedureCallImpl, java.lang.Integer, javax.persistence.ParameterMode, java.lang.Class<T>, org.hibernate.type.Type, );
    descriptor: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljavax/persistence/ParameterMode;Ljava/lang/Class;Lorg/hibernate/type/Type;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=7, args_size=7
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        start local 2 // java.lang.Integer position
        start local 3 // javax.persistence.ParameterMode mode
        start local 4 // java.lang.Class javaType
        start local 5 // org.hibernate.type.Type hibernateType
        start local 6 // boolean initialPassNullsSetting
         0: .line 80
            aload 0 /* this */
            aload 5 /* hibernateType */
            invokespecial org.hibernate.query.internal.QueryParameterImpl.<init>:(Lorg/hibernate/type/Type;)V
         1: .line 81
            aload 0 /* this */
            aload 1 /* procedureCall */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
         2: .line 82
            aload 0 /* this */
            aconst_null
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.name:Ljava/lang/String;
         3: .line 83
            aload 0 /* this */
            aload 2 /* position */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.position:Ljava/lang/Integer;
         4: .line 84
            aload 0 /* this */
            aload 3 /* mode */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
         5: .line 85
            aload 0 /* this */
            aload 4 /* javaType */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.javaType:Ljava/lang/Class;
         6: .line 86
            aload 0 /* this */
            iload 6 /* initialPassNullsSetting */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.passNullsEnabled:Z
         7: .line 88
            aload 0 /* this */
            aload 5 /* hibernateType */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.setHibernateType:(Lorg/hibernate/type/Type;)V
         8: .line 89
            return
        end local 6 // boolean initialPassNullsSetting
        end local 5 // org.hibernate.type.Type hibernateType
        end local 4 // java.lang.Class javaType
        end local 3 // javax.persistence.ParameterMode mode
        end local 2 // java.lang.Integer position
        end local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    9     0                     this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0    9     1            procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    9     2                 position  Ljava/lang/Integer;
            0    9     3                     mode  Ljavax/persistence/ParameterMode;
            0    9     4                 javaType  Ljava/lang/Class<TT;>;
            0    9     5            hibernateType  Lorg/hibernate/type/Type;
            0    9     6  initialPassNullsSetting  Z
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;Lorg/hibernate/type/Type;Z)V
    MethodParameters:
                         Name  Flags
      procedureCall            
      position                 
      mode                     
      javaType                 
      hibernateType            
      initialPassNullsSetting  

  public javax.persistence.ParameterMode getMode();
    descriptor: ()Ljavax/persistence/ParameterMode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 93
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  public boolean isPassNullsEnabled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 98
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.passNullsEnabled:Z
            ireturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  public void enablePassingNulls(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // boolean enabled
         0: .line 103
            aload 0 /* this */
            iload 1 /* enabled */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.passNullsEnabled:Z
         1: .line 104
            return
        end local 1 // boolean enabled
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0    2     1  enabled  Z
    MethodParameters:
         Name  Flags
      enabled  

  public int[] getSourceLocations();
    descriptor: ()[I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 108
            iconst_0
            newarray 10
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 113
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.name:Ljava/lang/String;
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  public java.lang.Integer getPosition();
    descriptor: ()Ljava/lang/Integer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 118
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.position:Ljava/lang/Integer;
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  public org.hibernate.type.Type getHibernateType();
    descriptor: ()Lorg/hibernate/type/Type;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 123
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getType:()Lorg/hibernate/type/Type;
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  public void setHibernateType(org.hibernate.type.Type);
    descriptor: (Lorg/hibernate/type/Type;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // org.hibernate.type.Type expectedType
         0: .line 128
            aload 0 /* this */
            aload 1 /* expectedType */
            invokespecial org.hibernate.query.internal.QueryParameterImpl.setHibernateType:(Lorg/hibernate/type/Type;)V
         1: .line 130
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.REF_CURSOR:Ljavax/persistence/ParameterMode;
            if_acmpne 4
         2: .line 131
            aload 0 /* this */
            iconst_1
            newarray 10
            dup
            iconst_0
            sipush 2012
            iastore
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.sqlTypes:[I
         3: .line 132
            goto 7
         4: .line 134
      StackMap locals:
      StackMap stack:
            aload 1 /* expectedType */
            ifnonnull 6
         5: .line 135
            new java.lang.IllegalArgumentException
            dup
            ldc "Type cannot be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* expectedType */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.sqlTypes:[I
         7: .line 142
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.hibernate.type.Type expectedType
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0    8     1  expectedType  Lorg/hibernate/type/Type;
    MethodParameters:
              Name  Flags
      expectedType  

  public java.lang.Class<T> getParameterType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 146
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.javaType:Ljava/lang/Class;
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
    Signature: ()Ljava/lang/Class<TT;>;

  public org.hibernate.procedure.ParameterBind<T> getBind();
    descriptor: ()Lorg/hibernate/procedure/ParameterBind;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 151
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getQueryParameterBindings:()Lorg/hibernate/query/spi/QueryParameterBindings;
            aload 0 /* this */
            invokeinterface org.hibernate.query.spi.QueryParameterBindings.getBinding:(Lorg/hibernate/query/QueryParameter;)Lorg/hibernate/query/spi/QueryParameterBinding;
            checkcast org.hibernate.procedure.ParameterBind
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
    Signature: ()Lorg/hibernate/procedure/ParameterBind<TT;>;

  public void bindValue(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // java.lang.Object value
         0: .line 157
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getBind:()Lorg/hibernate/procedure/ParameterBind;
            aload 1 /* value */
            invokeinterface org.hibernate.procedure.ParameterBind.setBindValue:(Ljava/lang/Object;)V
         1: .line 158
            return
        end local 1 // java.lang.Object value
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0    2     1  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      value  

  public void bindValue(java.lang.Object, javax.persistence.TemporalType);
    descriptor: (Ljava/lang/Object;Ljavax/persistence/TemporalType;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // java.lang.Object value
        start local 2 // javax.persistence.TemporalType explicitTemporalType
         0: .line 163
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getBind:()Lorg/hibernate/procedure/ParameterBind;
            aload 1 /* value */
            aload 2 /* explicitTemporalType */
            invokeinterface org.hibernate.procedure.ParameterBind.setBindValue:(Ljava/lang/Object;Ljavax/persistence/TemporalType;)V
         1: .line 164
            return
        end local 2 // javax.persistence.TemporalType explicitTemporalType
        end local 1 // java.lang.Object value
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0    2     1                 value  Ljava/lang/Object;
            0    2     2  explicitTemporalType  Ljavax/persistence/TemporalType;
    MethodParameters:
                      Name  Flags
      value                 
      explicitTemporalType  

  public void prepare(java.sql.CallableStatement, int);
    descriptor: (Ljava/sql/CallableStatement;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // java.sql.CallableStatement statement
        start local 2 // int startIndex
         0: .line 169
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getHibernateType:()Lorg/hibernate/type/Type;
            astore 3 /* typeToUse */
        start local 3 // org.hibernate.type.Type typeToUse
         1: .line 170
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.sqlTypes:[I
            astore 4 /* sqlTypesToUse */
        start local 4 // int[] sqlTypesToUse
         2: .line 172
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getBind:()Lorg/hibernate/procedure/ParameterBind;
            astore 5 /* bind */
        start local 5 // org.hibernate.procedure.ParameterBind bind
         3: .line 175
            aload 5 /* bind */
            ifnull 14
            aload 5 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getExplicitTemporalType:()Ljavax/persistence/TemporalType;
            ifnull 14
         4: .line 176
            ldc Ljava/util/Calendar;
            aload 5 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getValue:()Ljava/lang/Object;
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 14
         5: .line 177
            invokestatic org.hibernate.query.procedure.internal.ProcedureParameterImpl.$SWITCH_TABLE$javax$persistence$TemporalType:()[I
            aload 5 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getExplicitTemporalType:()Ljavax/persistence/TemporalType;
            invokevirtual javax.persistence.TemporalType.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 9
                    2: 12
                    3: 6
              default: 14
          }
         6: .line 179
      StackMap locals: org.hibernate.type.Type int[] org.hibernate.procedure.ParameterBind
      StackMap stack:
            getstatic org.hibernate.type.CalendarType.INSTANCE:Lorg/hibernate/type/CalendarType;
            astore 3 /* typeToUse */
         7: .line 180
            aload 3 /* typeToUse */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 4 /* sqlTypesToUse */
         8: .line 181
            goto 14
         9: .line 184
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.type.CalendarDateType.INSTANCE:Lorg/hibernate/type/CalendarDateType;
            astore 3 /* typeToUse */
        10: .line 185
            aload 3 /* typeToUse */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 4 /* sqlTypesToUse */
        11: .line 186
            goto 14
        12: .line 189
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.type.CalendarTimeType.INSTANCE:Lorg/hibernate/type/CalendarTimeType;
            astore 3 /* typeToUse */
        13: .line 190
            aload 3 /* typeToUse */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 4 /* sqlTypesToUse */
        14: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* startIndex */
            putfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.startIndex:I
        15: .line 198
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpeq 16
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 16
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.OUT:Ljavax/persistence/ParameterMode;
            if_acmpne 71
        16: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 17
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.OUT:Ljavax/persistence/ParameterMode;
            if_acmpne 37
        17: .line 200
      StackMap locals:
      StackMap stack:
            aload 4 /* sqlTypesToUse */
            arraylength
            iconst_1
            if_icmple 27
        18: .line 204
            ldc Lorg/hibernate/type/ProcedureParameterExtractionAware;
            aload 3 /* typeToUse */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 21
        19: .line 205
            aload 3 /* typeToUse */
            checkcast org.hibernate.type.ProcedureParameterExtractionAware
            invokeinterface org.hibernate.type.ProcedureParameterExtractionAware.canDoExtraction:()Z
            ifeq 21
        20: .line 203
            iconst_1
            goto 22
      StackMap locals:
      StackMap stack:
        21: iconst_0
      StackMap locals:
      StackMap stack: int
        22: istore 6 /* canHandleMultiParamExtraction */
        start local 6 // boolean canHandleMultiParamExtraction
        23: .line 206
            iload 6 /* canHandleMultiParamExtraction */
            ifne 27
        24: .line 208
            new java.lang.UnsupportedOperationException
            dup
        25: .line 209
            new java.lang.StringBuilder
            dup
            ldc "Type ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* typeToUse */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] does support multi-parameter value extraction"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 208
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // boolean canHandleMultiParamExtraction
        27: .line 221
      StackMap locals:
      StackMap stack:
            aload 4 /* sqlTypesToUse */
            arraylength
            iconst_1
            if_icmpne 32
        28: .line 222
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getParameterStrategy:()Lorg/hibernate/procedure/spi/ParameterStrategy;
            getstatic org.hibernate.procedure.spi.ParameterStrategy.NAMED:Lorg/hibernate/procedure/spi/ParameterStrategy;
            if_acmpne 32
        29: .line 223
            aload 0 /* this */
            aload 3 /* typeToUse */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.canDoNameParameterBinding:(Lorg/hibernate/type/Type;)Z
            ifeq 32
        30: .line 224
            aload 1 /* statement */
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getName:()Ljava/lang/String;
            aload 4 /* sqlTypesToUse */
            iconst_0
            iaload
            invokeinterface java.sql.CallableStatement.registerOutParameter:(Ljava/lang/String;I)V
        31: .line 225
            goto 37
        32: .line 227
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        33: goto 36
        34: .line 228
      StackMap locals: int
      StackMap stack:
            aload 1 /* statement */
            iload 2 /* startIndex */
            iload 6 /* i */
            iadd
            aload 4 /* sqlTypesToUse */
            iload 6 /* i */
            iaload
            invokeinterface java.sql.CallableStatement.registerOutParameter:(II)V
        35: .line 227
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 6 /* i */
            aload 4 /* sqlTypesToUse */
            arraylength
            if_icmplt 34
        end local 6 // int i
        37: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 38
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpne 79
        38: .line 234
      StackMap locals:
      StackMap stack:
            aload 5 /* bind */
            ifnull 39
            aload 5 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getValue:()Ljava/lang/Object;
            ifnonnull 61
        39: .line 242
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.isPassNullsEnabled:()Z
            ifeq 55
        40: .line 243
            getstatic org.hibernate.query.procedure.internal.ProcedureParameterImpl.log:Lorg/jboss/logging/Logger;
        41: .line 244
            ldc "Stored procedure [%s] IN/INOUT parameter [%s] not bound and `passNulls` was set to true; binding NULL"
        42: .line 245
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getProcedureName:()Ljava/lang/String;
        43: .line 246
            aload 0 /* this */
        44: .line 243
            invokevirtual org.jboss.logging.Logger.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        45: .line 248
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getParameterStrategy:()Lorg/hibernate/procedure/spi/ParameterStrategy;
            getstatic org.hibernate.procedure.spi.ParameterStrategy.NAMED:Lorg/hibernate/procedure/spi/ParameterStrategy;
            if_acmpne 53
            aload 0 /* this */
            aload 3 /* typeToUse */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.canDoNameParameterBinding:(Lorg/hibernate/type/Type;)Z
            ifeq 53
        46: .line 249
            aload 3 /* typeToUse */
            checkcast org.hibernate.type.ProcedureParameterNamedBinder
        47: .line 250
            aload 1 /* statement */
        48: .line 251
            aconst_null
        49: .line 252
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getName:()Ljava/lang/String;
        50: .line 253
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
        51: .line 249
            invokeinterface org.hibernate.type.ProcedureParameterNamedBinder.nullSafeSet:(Ljava/sql/CallableStatement;Ljava/lang/Object;Ljava/lang/String;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        52: .line 255
            goto 79
        53: .line 257
      StackMap locals:
      StackMap stack:
            aload 3 /* typeToUse */
            aload 1 /* statement */
            aconst_null
            iload 2 /* startIndex */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.type.Type.nullSafeSet:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        54: .line 259
            goto 79
        55: .line 261
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.query.procedure.internal.ProcedureParameterImpl.log:Lorg/jboss/logging/Logger;
        56: .line 262
            ldc "Stored procedure [%s] IN/INOUT parameter [%s] not bound and `passNulls` was set to false; assuming procedure defines default value"
        57: .line 263
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getProcedureName:()Ljava/lang/String;
        58: .line 264
            aload 0 /* this */
        59: .line 261
            invokevirtual org.jboss.logging.Logger.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        60: .line 267
            goto 79
        61: .line 269
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getParameterStrategy:()Lorg/hibernate/procedure/spi/ParameterStrategy;
            getstatic org.hibernate.procedure.spi.ParameterStrategy.NAMED:Lorg/hibernate/procedure/spi/ParameterStrategy;
            if_acmpne 69
            aload 0 /* this */
            aload 3 /* typeToUse */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.canDoNameParameterBinding:(Lorg/hibernate/type/Type;)Z
            ifeq 69
        62: .line 270
            aload 3 /* typeToUse */
            checkcast org.hibernate.type.ProcedureParameterNamedBinder
        63: .line 271
            aload 1 /* statement */
        64: .line 272
            aload 5 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getValue:()Ljava/lang/Object;
        65: .line 273
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getName:()Ljava/lang/String;
        66: .line 274
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
        67: .line 270
            invokeinterface org.hibernate.type.ProcedureParameterNamedBinder.nullSafeSet:(Ljava/sql/CallableStatement;Ljava/lang/Object;Ljava/lang/String;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        68: .line 276
            goto 79
        69: .line 278
      StackMap locals:
      StackMap stack:
            aload 3 /* typeToUse */
            aload 1 /* statement */
            aload 5 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getValue:()Ljava/lang/Object;
            iload 2 /* startIndex */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.type.Type.nullSafeSet:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        70: .line 282
            goto 79
        71: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getParameterStrategy:()Lorg/hibernate/procedure/spi/ParameterStrategy;
            getstatic org.hibernate.procedure.spi.ParameterStrategy.NAMED:Lorg/hibernate/procedure/spi/ParameterStrategy;
            if_acmpne 76
        72: .line 286
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getServiceRegistry:()Lorg/hibernate/service/spi/ServiceRegistryImplementor;
        73: .line 287
            ldc Lorg/hibernate/engine/jdbc/cursor/spi/RefCursorSupport;
            invokeinterface org.hibernate.service.spi.ServiceRegistryImplementor.getService:(Ljava/lang/Class;)Lorg/hibernate/service/Service;
            checkcast org.hibernate.engine.jdbc.cursor.spi.RefCursorSupport
        74: .line 288
            aload 1 /* statement */
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getName:()Ljava/lang/String;
            invokeinterface org.hibernate.engine.jdbc.cursor.spi.RefCursorSupport.registerRefCursorParameter:(Ljava/sql/CallableStatement;Ljava/lang/String;)V
        75: .line 289
            goto 79
        76: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getServiceRegistry:()Lorg/hibernate/service/spi/ServiceRegistryImplementor;
        77: .line 292
            ldc Lorg/hibernate/engine/jdbc/cursor/spi/RefCursorSupport;
            invokeinterface org.hibernate.service.spi.ServiceRegistryImplementor.getService:(Ljava/lang/Class;)Lorg/hibernate/service/Service;
            checkcast org.hibernate.engine.jdbc.cursor.spi.RefCursorSupport
        78: .line 293
            aload 1 /* statement */
            iload 2 /* startIndex */
            invokeinterface org.hibernate.engine.jdbc.cursor.spi.RefCursorSupport.registerRefCursorParameter:(Ljava/sql/CallableStatement;I)V
        79: .line 296
      StackMap locals:
      StackMap stack:
            return
        end local 5 // org.hibernate.procedure.ParameterBind bind
        end local 4 // int[] sqlTypesToUse
        end local 3 // org.hibernate.type.Type typeToUse
        end local 2 // int startIndex
        end local 1 // java.sql.CallableStatement statement
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   80     0                           this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0   80     1                      statement  Ljava/sql/CallableStatement;
            0   80     2                     startIndex  I
            1   80     3                      typeToUse  Lorg/hibernate/type/Type;
            2   80     4                  sqlTypesToUse  [I
            3   80     5                           bind  Lorg/hibernate/procedure/ParameterBind;
           23   27     6  canHandleMultiParamExtraction  Z
           33   37     6                              i  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
            Name  Flags
      statement   
      startIndex  

  private boolean canDoNameParameterBinding(org.hibernate.type.Type);
    descriptor: (Lorg/hibernate/type/Type;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // org.hibernate.type.Type hibernateType
         0: .line 299
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
         1: .line 300
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
         2: .line 301
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getJdbcSessionOwner:()Lorg/hibernate/resource/jdbc/spi/JdbcSessionOwner;
         3: .line 302
            invokeinterface org.hibernate.resource.jdbc.spi.JdbcSessionOwner.getJdbcSessionContext:()Lorg/hibernate/resource/jdbc/spi/JdbcSessionContext;
         4: .line 303
            invokeinterface org.hibernate.resource.jdbc.spi.JdbcSessionContext.getServiceRegistry:()Lorg/hibernate/service/ServiceRegistry;
            ldc Lorg/hibernate/engine/jdbc/env/spi/JdbcEnvironment;
            invokeinterface org.hibernate.service.ServiceRegistry.getService:(Ljava/lang/Class;)Lorg/hibernate/service/Service;
            checkcast org.hibernate.engine.jdbc.env.spi.JdbcEnvironment
         5: .line 304
            invokeinterface org.hibernate.engine.jdbc.env.spi.JdbcEnvironment.getExtractedDatabaseMetaData:()Lorg/hibernate/engine/jdbc/env/spi/ExtractedDatabaseMetaData;
         6: .line 299
            astore 2 /* databaseMetaData */
        start local 2 // org.hibernate.engine.jdbc.env.spi.ExtractedDatabaseMetaData databaseMetaData
         7: .line 306
            aload 2 /* databaseMetaData */
            invokeinterface org.hibernate.engine.jdbc.env.spi.ExtractedDatabaseMetaData.supportsNamedParameters:()Z
            ifeq 11
         8: .line 307
            ldc Lorg/hibernate/type/ProcedureParameterNamedBinder;
            aload 1 /* hibernateType */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 308
            aload 1 /* hibernateType */
            checkcast org.hibernate.type.ProcedureParameterNamedBinder
            invokeinterface org.hibernate.type.ProcedureParameterNamedBinder.canDoSetting:()Z
            ifeq 11
        10: .line 305
            iconst_1
            ireturn
      StackMap locals: org.hibernate.engine.jdbc.env.spi.ExtractedDatabaseMetaData
      StackMap stack:
        11: iconst_0
            ireturn
        end local 2 // org.hibernate.engine.jdbc.env.spi.ExtractedDatabaseMetaData databaseMetaData
        end local 1 // org.hibernate.type.Type hibernateType
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0   12     1     hibernateType  Lorg/hibernate/type/Type;
            7   12     2  databaseMetaData  Lorg/hibernate/engine/jdbc/env/spi/ExtractedDatabaseMetaData;
    MethodParameters:
               Name  Flags
      hibernateType  

  public int[] getSqlTypes();
    descriptor: ()[I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 312
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.REF_CURSOR:Ljavax/persistence/ParameterMode;
            if_acmpne 2
         1: .line 314
            new java.lang.IllegalStateException
            dup
            ldc "REF_CURSOR parameters do not have a SQL/JDBC type"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 317
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.determineHibernateType:()Lorg/hibernate/type/Type;
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            areturn
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;

  private org.hibernate.type.Type determineHibernateType();
    descriptor: ()Lorg/hibernate/type/Type;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
         0: .line 321
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getBind:()Lorg/hibernate/procedure/ParameterBind;
            astore 1 /* bind */
        start local 1 // org.hibernate.procedure.ParameterBind bind
         1: .line 324
            aload 1 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getBindType:()Lorg/hibernate/type/Type;
            astore 2 /* bindType */
        start local 2 // org.hibernate.type.Type bindType
         2: .line 325
            aload 2 /* bindType */
            ifnull 4
         3: .line 326
            aload 2 /* bindType */
            areturn
         4: .line 330
      StackMap locals: org.hibernate.procedure.ParameterBind org.hibernate.type.Type
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getHibernateType:()Lorg/hibernate/type/Type;
            astore 3 /* paramType */
        start local 3 // org.hibernate.type.Type paramType
         5: .line 331
            aload 3 /* paramType */
            ifnull 7
         6: .line 332
            aload 3 /* paramType */
            areturn
         7: .line 336
      StackMap locals: org.hibernate.type.Type
      StackMap stack:
            aload 1 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getValue:()Ljava/lang/Object;
            ifnull 13
         8: .line 337
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
         9: .line 338
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
        10: .line 339
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getTypeResolver:()Lorg/hibernate/type/TypeResolver;
        11: .line 340
            aload 1 /* bind */
            invokeinterface org.hibernate.procedure.ParameterBind.getValue:()Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual org.hibernate.type.TypeResolver.heuristicType:(Ljava/lang/String;)Lorg/hibernate/type/Type;
        12: .line 337
            areturn
        13: .line 343
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "Unable to determine SQL type(s) - Hibernate Type not known"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // org.hibernate.type.Type paramType
        end local 2 // org.hibernate.type.Type bindType
        end local 1 // org.hibernate.procedure.ParameterBind bind
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            1   14     1       bind  Lorg/hibernate/procedure/ParameterBind<TT;>;
            2   14     2   bindType  Lorg/hibernate/type/Type;
            5   14     3  paramType  Lorg/hibernate/type/Type;

  public T extract(java.sql.CallableStatement);
    descriptor: (Ljava/sql/CallableStatement;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
        start local 1 // java.sql.CallableStatement statement
         0: .line 349
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpne 2
         1: .line 350
            new org.hibernate.procedure.ParameterMisuseException
            dup
            ldc "IN parameter not valid for output extraction"
            invokespecial org.hibernate.procedure.ParameterMisuseException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.REF_CURSOR:Ljavax/persistence/ParameterMode;
            if_acmpne 8
         3: .line 354
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getParameterStrategy:()Lorg/hibernate/procedure/spi/ParameterStrategy;
            getstatic org.hibernate.procedure.spi.ParameterStrategy.NAMED:Lorg/hibernate/procedure/spi/ParameterStrategy;
            if_acmpne 6
         4: .line 355
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.name:Ljava/lang/String;
            invokeinterface java.sql.CallableStatement.getObject:(Ljava/lang/String;)Ljava/lang/Object;
         5: areturn
         6: .line 358
      StackMap locals:
      StackMap stack:
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.startIndex:I
            invokeinterface java.sql.CallableStatement.getObject:(I)Ljava/lang/Object;
         7: areturn
         8: .line 362
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.determineHibernateType:()Lorg/hibernate/type/Type;
            astore 2 /* hibernateType */
        start local 2 // org.hibernate.type.Type hibernateType
         9: .line 363
            aload 2 /* hibernateType */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 3 /* sqlTypes */
        start local 3 // int[] sqlTypes
        10: .line 368
            aload 3 /* sqlTypes */
            arraylength
            iconst_1
            if_icmpne 14
        11: .line 369
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getParameterStrategy:()Lorg/hibernate/procedure/spi/ParameterStrategy;
            getstatic org.hibernate.procedure.spi.ParameterStrategy.NAMED:Lorg/hibernate/procedure/spi/ParameterStrategy;
            if_acmpne 14
        12: .line 370
            aload 0 /* this */
            aload 2 /* hibernateType */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.canDoNameParameterBinding:(Lorg/hibernate/type/Type;)Z
            ifeq 14
        13: .line 368
            iconst_1
            goto 15
      StackMap locals: org.hibernate.type.Type int[]
      StackMap stack:
        14: iconst_0
      StackMap locals:
      StackMap stack: int
        15: istore 4 /* useNamed */
        start local 4 // boolean useNamed
        16: .line 373
            ldc Lorg/hibernate/type/ProcedureParameterExtractionAware;
            aload 2 /* hibernateType */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 30
        17: .line 374
            iload 4 /* useNamed */
            ifeq 24
        18: .line 375
            aload 2 /* hibernateType */
            checkcast org.hibernate.type.ProcedureParameterExtractionAware
        19: .line 376
            aload 1 /* statement */
        20: .line 377
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual org.hibernate.query.procedure.internal.ProcedureParameterImpl.getName:()Ljava/lang/String;
            aastore
        21: .line 378
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
        22: .line 375
            invokeinterface org.hibernate.type.ProcedureParameterExtractionAware.extract:(Ljava/sql/CallableStatement;[Ljava/lang/String;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)Ljava/lang/Object;
        23: areturn
        24: .line 382
      StackMap locals: int
      StackMap stack:
            aload 2 /* hibernateType */
            checkcast org.hibernate.type.ProcedureParameterExtractionAware
        25: .line 383
            aload 1 /* statement */
        26: .line 384
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.startIndex:I
        27: .line 385
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
        28: .line 382
            invokeinterface org.hibernate.type.ProcedureParameterExtractionAware.extract:(Ljava/sql/CallableStatement;ILorg/hibernate/engine/spi/SharedSessionContractImplementor;)Ljava/lang/Object;
        29: areturn
        30: .line 390
      StackMap locals:
      StackMap stack:
            iload 4 /* useNamed */
            ifeq 33
        31: .line 391
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.name:Ljava/lang/String;
            invokeinterface java.sql.CallableStatement.getObject:(Ljava/lang/String;)Ljava/lang/Object;
        32: areturn
        33: .line 394
      StackMap locals:
      StackMap stack:
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.startIndex:I
            invokeinterface java.sql.CallableStatement.getObject:(I)Ljava/lang/Object;
        34: areturn
        end local 4 // boolean useNamed
        end local 3 // int[] sqlTypes
        end local 2 // org.hibernate.type.Type hibernateType
        35: .line 399
      StackMap locals: org.hibernate.query.procedure.internal.ProcedureParameterImpl java.sql.CallableStatement
      StackMap stack: java.sql.SQLException
            astore 2 /* e */
        start local 2 // java.sql.SQLException e
        36: .line 400
            aload 0 /* this */
            getfield org.hibernate.query.procedure.internal.ProcedureParameterImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getSQLExceptionHelper:()Lorg/hibernate/engine/jdbc/spi/SqlExceptionHelper;
        37: .line 401
            aload 2 /* e */
        38: .line 402
            ldc "Unable to extract OUT/INOUT parameter value"
        39: .line 400
            invokevirtual org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert:(Ljava/sql/SQLException;Ljava/lang/String;)Lorg/hibernate/JDBCException;
            athrow
        end local 2 // java.sql.SQLException e
        end local 1 // java.sql.CallableStatement statement
        end local 0 // org.hibernate.query.procedure.internal.ProcedureParameterImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   40     0           this  Lorg/hibernate/query/procedure/internal/ProcedureParameterImpl<TT;>;
            0   40     1      statement  Ljava/sql/CallableStatement;
            9   35     2  hibernateType  Lorg/hibernate/type/Type;
           10   35     3       sqlTypes  [I
           16   35     4       useNamed  Z
           36   40     2              e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           2     5      35  Class java.sql.SQLException
           6     7      35  Class java.sql.SQLException
           8    23      35  Class java.sql.SQLException
          24    29      35  Class java.sql.SQLException
          30    32      35  Class java.sql.SQLException
          33    34      35  Class java.sql.SQLException
    Signature: (Ljava/sql/CallableStatement;)TT;
    MethodParameters:
           Name  Flags
      statement  

  static int[] $SWITCH_TABLE$javax$persistence$TemporalType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 38
            getstatic org.hibernate.query.procedure.internal.ProcedureParameterImpl.$SWITCH_TABLE$javax$persistence$TemporalType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic javax.persistence.TemporalType.values:()[Ljavax/persistence/TemporalType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic javax.persistence.TemporalType.DATE:Ljavax/persistence/TemporalType;
            invokevirtual javax.persistence.TemporalType.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic javax.persistence.TemporalType.TIME:Ljavax/persistence/TemporalType;
            invokevirtual javax.persistence.TemporalType.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic javax.persistence.TemporalType.TIMESTAMP:Ljavax/persistence/TemporalType;
            invokevirtual javax.persistence.TemporalType.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            dup
            putstatic org.hibernate.query.procedure.internal.ProcedureParameterImpl.$SWITCH_TABLE$javax$persistence$TemporalType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
}
Signature: <T:Ljava/lang/Object;>Lorg/hibernate/query/internal/QueryParameterImpl<TT;>;Lorg/hibernate/query/procedure/spi/ProcedureParameterImplementor<TT;>;Lorg/hibernate/procedure/ParameterRegistration<TT;>;
SourceFile: "ProcedureParameterImpl.java"