public abstract class org.hibernate.procedure.internal.AbstractParameterRegistrationImpl<T> implements org.hibernate.procedure.spi.ParameterRegistrationImplementor<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.hibernate.procedure.internal.AbstractParameterRegistrationImpl
  super_class: java.lang.Object
{
  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.Integer position;
    descriptor: Ljava/lang/Integer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    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> type;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<TT;>;

  private org.hibernate.procedure.internal.ParameterBindImpl bind;
    descriptor: Lorg/hibernate/procedure/internal/ParameterBindImpl;
    flags: (0x0002) ACC_PRIVATE

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

  private org.hibernate.type.Type hibernateType;
    descriptor: Lorg/hibernate/type/Type;
    flags: (0x0002) ACC_PRIVATE

  private int[] sqlTypes;
    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 53
            ldc Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl;
            invokestatic org.jboss.logging.Logger.getLogger:(Ljava/lang/Class;)Lorg/jboss/logging/Logger;
            putstatic org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.log:Lorg/jboss/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(org.hibernate.procedure.internal.ProcedureCallImpl, java.lang.Integer, javax.persistence.ParameterMode, java.lang.Class<T>);
    descriptor: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljavax/persistence/ParameterMode;Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl 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 type
         0: .line 77
            aload 0 /* this */
            aload 1 /* procedureCall */
            aload 2 /* position */
            aconst_null
            aload 3 /* mode */
            aload 4 /* type */
            invokespecial org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.<init>:(Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;)V
         1: .line 78
            return
        end local 4 // java.lang.Class type
        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.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    2     1  procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    2     2       position  Ljava/lang/Integer;
            0    2     3           mode  Ljavax/persistence/ParameterMode;
            0    2     4           type  Ljava/lang/Class<TT;>;
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;)V
    MethodParameters:
               Name  Flags
      procedureCall  
      position       
      mode           
      type           

  protected 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;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl 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 type
        start local 5 // org.hibernate.type.Type hibernateType
         0: .line 86
            aload 0 /* this */
            aload 1 /* procedureCall */
            aload 2 /* position */
            aconst_null
            aload 3 /* mode */
            aload 4 /* type */
            aload 5 /* hibernateType */
            invokespecial org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.<init>:(Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;Lorg/hibernate/type/Type;)V
         1: .line 87
            return
        end local 5 // org.hibernate.type.Type hibernateType
        end local 4 // java.lang.Class type
        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.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    2     1  procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    2     2       position  Ljava/lang/Integer;
            0    2     3           mode  Ljavax/persistence/ParameterMode;
            0    2     4           type  Ljava/lang/Class<TT;>;
            0    2     5  hibernateType  Lorg/hibernate/type/Type;
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;Lorg/hibernate/type/Type;)V
    MethodParameters:
               Name  Flags
      procedureCall  
      position       
      mode           
      type           
      hibernateType  

  protected void <init>(org.hibernate.procedure.internal.ProcedureCallImpl, java.lang.String, javax.persistence.ParameterMode, java.lang.Class<T>);
    descriptor: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl 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 type
         0: .line 97
            aload 0 /* this */
            aload 1 /* procedureCall */
            aconst_null
            aload 2 /* name */
            aload 3 /* mode */
            aload 4 /* type */
            invokespecial org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.<init>:(Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;)V
         1: .line 98
            return
        end local 4 // java.lang.Class type
        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.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    2     1  procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    2     2           name  Ljava/lang/String;
            0    2     3           mode  Ljavax/persistence/ParameterMode;
            0    2     4           type  Ljava/lang/Class<TT;>;
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;)V
    MethodParameters:
               Name  Flags
      procedureCall  
      name           
      mode           
      type           

  protected 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;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl 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 type
        start local 5 // org.hibernate.type.Type hibernateType
         0: .line 106
            aload 0 /* this */
            aload 1 /* procedureCall */
            aconst_null
            aload 2 /* name */
            aload 3 /* mode */
            aload 4 /* type */
            aload 5 /* hibernateType */
            invokespecial org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.<init>:(Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;Lorg/hibernate/type/Type;)V
         1: .line 107
            return
        end local 5 // org.hibernate.type.Type hibernateType
        end local 4 // java.lang.Class type
        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.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    2     1  procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    2     2           name  Ljava/lang/String;
            0    2     3           mode  Ljavax/persistence/ParameterMode;
            0    2     4           type  Ljava/lang/Class<TT;>;
            0    2     5  hibernateType  Lorg/hibernate/type/Type;
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;Lorg/hibernate/type/Type;)V
    MethodParameters:
               Name  Flags
      procedureCall  
      name           
      mode           
      type           
      hibernateType  

  private void <init>(org.hibernate.procedure.internal.ProcedureCallImpl, java.lang.Integer, java.lang.String, javax.persistence.ParameterMode, java.lang.Class<T>, org.hibernate.type.Type);
    descriptor: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;Lorg/hibernate/type/Type;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=7
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        start local 2 // java.lang.Integer position
        start local 3 // java.lang.String name
        start local 4 // javax.persistence.ParameterMode mode
        start local 5 // java.lang.Class type
        start local 6 // org.hibernate.type.Type hibernateType
         0: .line 112
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 119
            aload 0 /* this */
            aload 1 /* procedureCall */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
         2: .line 121
            aload 0 /* this */
            aload 2 /* position */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.position:Ljava/lang/Integer;
         3: .line 122
            aload 0 /* this */
            aload 3 /* name */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.name:Ljava/lang/String;
         4: .line 124
            aload 0 /* this */
            aload 4 /* mode */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
         5: .line 125
            aload 0 /* this */
            aload 5 /* type */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.type:Ljava/lang/Class;
         6: .line 127
            aload 4 /* mode */
            getstatic javax.persistence.ParameterMode.REF_CURSOR:Ljavax/persistence/ParameterMode;
            if_acmpne 8
         7: .line 128
            return
         8: .line 131
      StackMap locals: org.hibernate.procedure.internal.AbstractParameterRegistrationImpl org.hibernate.procedure.internal.ProcedureCallImpl java.lang.Integer java.lang.String javax.persistence.ParameterMode java.lang.Class org.hibernate.type.Type
      StackMap stack:
            aload 0 /* this */
            aload 6 /* hibernateType */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.setHibernateType:(Lorg/hibernate/type/Type;)V
         9: .line 132
            return
        end local 6 // org.hibernate.type.Type hibernateType
        end local 5 // java.lang.Class type
        end local 4 // javax.persistence.ParameterMode mode
        end local 3 // java.lang.String name
        end local 2 // java.lang.Integer position
        end local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0   10     1  procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0   10     2       position  Ljava/lang/Integer;
            0   10     3           name  Ljava/lang/String;
            0   10     4           mode  Ljavax/persistence/ParameterMode;
            0   10     5           type  Ljava/lang/Class<TT;>;
            0   10     6  hibernateType  Lorg/hibernate/type/Type;
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;Lorg/hibernate/type/Type;)V
    MethodParameters:
               Name  Flags
      procedureCall  
      position       
      name           
      mode           
      type           
      hibernateType  

  private void <init>(org.hibernate.procedure.internal.ProcedureCallImpl, java.lang.Integer, java.lang.String, javax.persistence.ParameterMode, java.lang.Class<T>);
    descriptor: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=6
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        start local 2 // java.lang.Integer position
        start local 3 // java.lang.String name
        start local 4 // javax.persistence.ParameterMode mode
        start local 5 // java.lang.Class type
         0: .line 140
            aload 0 /* this */
         1: .line 141
            aload 1 /* procedureCall */
         2: .line 142
            aload 2 /* position */
         3: .line 143
            aload 3 /* name */
         4: .line 144
            aload 4 /* mode */
         5: .line 145
            aload 5 /* type */
         6: .line 146
            aload 1 /* procedureCall */
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getTypeResolver:()Lorg/hibernate/type/TypeResolver;
            aload 5 /* type */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual org.hibernate.type.TypeResolver.heuristicType:(Ljava/lang/String;)Lorg/hibernate/type/Type;
            invokespecial org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.<init>:(Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class;Lorg/hibernate/type/Type;)V
         7: .line 148
            return
        end local 5 // java.lang.Class type
        end local 4 // javax.persistence.ParameterMode mode
        end local 3 // java.lang.String name
        end local 2 // java.lang.Integer position
        end local 1 // org.hibernate.procedure.internal.ProcedureCallImpl procedureCall
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    8     1  procedureCall  Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            0    8     2       position  Ljava/lang/Integer;
            0    8     3           name  Ljava/lang/String;
            0    8     4           mode  Ljavax/persistence/ParameterMode;
            0    8     5           type  Ljava/lang/Class<TT;>;
    Signature: (Lorg/hibernate/procedure/internal/ProcedureCallImpl;Ljava/lang/Integer;Ljava/lang/String;Ljavax/persistence/ParameterMode;Ljava/lang/Class<TT;>;)V
    MethodParameters:
               Name  Flags
      procedureCall  
      position       
      name           
      mode           
      type           

  protected org.hibernate.engine.spi.SessionImplementor session();
    descriptor: ()Lorg/hibernate/engine/spi/SessionImplementor;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 151
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<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.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 156
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.name:Ljava/lang/String;
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<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.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 161
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.position:Ljava/lang/Integer;
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;

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

  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.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 171
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<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.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 176
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;

  public void setHibernateType(org.hibernate.type.Type);
    descriptor: (Lorg/hibernate/type/Type;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // org.hibernate.type.Type type
         0: .line 181
            aload 1 /* type */
            ifnonnull 2
         1: .line 182
            new java.lang.IllegalArgumentException
            dup
            ldc "Type cannot be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* type */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
         3: .line 185
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.sqlTypes:[I
         4: .line 186
            return
        end local 1 // org.hibernate.type.Type type
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    5     1  type  Lorg/hibernate/type/Type;
    MethodParameters:
      Name  Flags
      type  

  public org.hibernate.procedure.ParameterBind<T> getBind();
    descriptor: ()Lorg/hibernate/procedure/ParameterBind;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 191
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
    Signature: ()Lorg/hibernate/procedure/ParameterBind<TT;>;

  public void bindValue();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // java.lang.Object value
         0: .line 196
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.validateBindability:()V
         1: .line 197
            aload 0 /* this */
            new org.hibernate.procedure.internal.ParameterBindImpl
            dup
            aload 1 /* value */
            invokespecial org.hibernate.procedure.internal.ParameterBindImpl.<init>:(Ljava/lang/Object;)V
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
         2: .line 198
            return
        end local 1 // java.lang.Object value
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    3     1  value  TT;
    Signature: (TT;)V
    MethodParameters:
       Name  Flags
      value  

  private void validateBindability();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 201
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.canBind:()Z
            ifne 2
         1: .line 202
            new org.hibernate.procedure.ParameterMisuseException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot bind value to non-input parameter : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.hibernate.procedure.ParameterMisuseException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 204
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;

  private boolean canBind();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 207
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpeq 1
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;

  public void bindValue(T, javax.persistence.TemporalType);
    descriptor: (Ljava/lang/Object;Ljavax/persistence/TemporalType;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // java.lang.Object value
        start local 2 // javax.persistence.TemporalType explicitTemporalType
         0: .line 212
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.validateBindability:()V
         1: .line 213
            aload 2 /* explicitTemporalType */
            ifnull 4
         2: .line 214
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.isDateTimeType:()Z
            ifne 4
         3: .line 215
            new java.lang.IllegalArgumentException
            dup
            ldc "TemporalType should not be specified for non date/time type"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new org.hibernate.procedure.internal.ParameterBindImpl
            dup
            aload 1 /* value */
            aload 2 /* explicitTemporalType */
            invokespecial org.hibernate.procedure.internal.ParameterBindImpl.<init>:(Ljava/lang/Object;Ljavax/persistence/TemporalType;)V
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
         5: .line 219
            return
        end local 2 // javax.persistence.TemporalType explicitTemporalType
        end local 1 // java.lang.Object value
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0                  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0    6     1                 value  TT;
            0    6     2  explicitTemporalType  Ljavax/persistence/TemporalType;
    Signature: (TT;Ljavax/persistence/TemporalType;)V
    MethodParameters:
                      Name  Flags
      value                 
      explicitTemporalType  

  private boolean isDateTimeType();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 222
            ldc Ljava/util/Date;
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.type:Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         1: .line 223
            ldc Ljava/util/Calendar;
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.type:Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 222
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;

  public void prepare(java.sql.CallableStatement, int);
    descriptor: (Ljava/sql/CallableStatement;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // java.sql.CallableStatement statement
        start local 2 // int startIndex
         0: .line 229
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            astore 3 /* typeToUse */
        start local 3 // org.hibernate.type.Type typeToUse
         1: .line 230
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.sqlTypes:[I
            astore 4 /* sqlTypesToUse */
        start local 4 // int[] sqlTypesToUse
         2: .line 233
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            ifnull 13
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            invokevirtual org.hibernate.procedure.internal.ParameterBindImpl.getExplicitTemporalType:()Ljavax/persistence/TemporalType;
            ifnull 13
         3: .line 234
            ldc Ljava/util/Calendar;
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            invokevirtual org.hibernate.procedure.internal.ParameterBindImpl.getValue:()Ljava/lang/Object;
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 13
         4: .line 235
            invokestatic org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.$SWITCH_TABLE$javax$persistence$TemporalType:()[I
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            invokevirtual org.hibernate.procedure.internal.ParameterBindImpl.getExplicitTemporalType:()Ljavax/persistence/TemporalType;
            invokevirtual javax.persistence.TemporalType.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 8
                    2: 11
                    3: 5
              default: 13
          }
         5: .line 237
      StackMap locals: org.hibernate.type.Type int[]
      StackMap stack:
            getstatic org.hibernate.type.CalendarType.INSTANCE:Lorg/hibernate/type/CalendarType;
            astore 3 /* typeToUse */
         6: .line 238
            aload 3 /* typeToUse */
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 4 /* sqlTypesToUse */
         7: .line 239
            goto 13
         8: .line 242
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.type.CalendarDateType.INSTANCE:Lorg/hibernate/type/CalendarDateType;
            astore 3 /* typeToUse */
         9: .line 243
            aload 3 /* typeToUse */
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 4 /* sqlTypesToUse */
        10: .line 244
            goto 13
        11: .line 247
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.type.CalendarTimeType.INSTANCE:Lorg/hibernate/type/CalendarTimeType;
            astore 3 /* typeToUse */
        12: .line 248
            aload 3 /* typeToUse */
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.sqlTypes:(Lorg/hibernate/engine/spi/Mapping;)[I
            astore 4 /* sqlTypesToUse */
        13: .line 255
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* startIndex */
            putfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.startIndex:I
        14: .line 256
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpeq 15
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 15
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.OUT:Ljavax/persistence/ParameterMode;
            if_acmpne 41
        15: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 16
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.OUT:Ljavax/persistence/ParameterMode;
            if_acmpne 31
        16: .line 258
      StackMap locals:
      StackMap stack:
            aload 4 /* sqlTypesToUse */
            arraylength
            iconst_1
            if_icmple 26
        17: .line 262
            ldc Lorg/hibernate/type/ProcedureParameterExtractionAware;
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 20
        18: .line 263
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            checkcast org.hibernate.type.ProcedureParameterExtractionAware
            invokeinterface org.hibernate.type.ProcedureParameterExtractionAware.canDoExtraction:()Z
            ifeq 20
        19: .line 261
            iconst_1
            goto 21
      StackMap locals:
      StackMap stack:
        20: iconst_0
      StackMap locals:
      StackMap stack: int
        21: istore 5 /* canHandleMultiParamExtraction */
        start local 5 // boolean canHandleMultiParamExtraction
        22: .line 264
            iload 5 /* canHandleMultiParamExtraction */
            ifne 26
        23: .line 266
            new java.lang.UnsupportedOperationException
            dup
        24: .line 267
            new java.lang.StringBuilder
            dup
            ldc "Type ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            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;
        25: .line 266
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // boolean canHandleMultiParamExtraction
        26: .line 271
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        27: goto 30
        28: .line 272
      StackMap locals: int
      StackMap stack:
            aload 1 /* statement */
            iload 2 /* startIndex */
            iload 5 /* i */
            iadd
            aload 4 /* sqlTypesToUse */
            iload 5 /* i */
            iaload
            invokeinterface java.sql.CallableStatement.registerOutParameter:(II)V
        29: .line 271
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        30: iload 5 /* i */
            aload 4 /* sqlTypesToUse */
            arraylength
            if_icmplt 28
        end local 5 // int i
        31: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.INOUT:Ljavax/persistence/ParameterMode;
            if_acmpeq 32
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpne 49
        32: .line 277
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            ifnull 33
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            invokevirtual org.hibernate.procedure.internal.ParameterBindImpl.getValue:()Ljava/lang/Object;
            ifnonnull 39
        33: .line 284
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.log:Lorg/jboss/logging/Logger;
        34: .line 285
            ldc "Stored procedure [%s] IN/INOUT parameter [%s] not bound; assuming procedure defines default value"
        35: .line 286
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getProcedureName:()Ljava/lang/String;
        36: .line 287
            aload 0 /* this */
        37: .line 284
            invokevirtual org.jboss.logging.Logger.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        38: .line 289
            goto 49
        39: .line 291
      StackMap locals:
      StackMap stack:
            aload 3 /* typeToUse */
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.bind:Lorg/hibernate/procedure/internal/ParameterBindImpl;
            invokevirtual org.hibernate.procedure.internal.ParameterBindImpl.getValue:()Ljava/lang/Object;
            iload 2 /* startIndex */
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.type.Type.nullSafeSet:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)V
        40: .line 294
            goto 49
        41: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.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 46
        42: .line 298
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getServiceRegistry:()Lorg/hibernate/service/spi/ServiceRegistryImplementor;
        43: .line 299
            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
        44: .line 300
            aload 1 /* statement */
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.getName:()Ljava/lang/String;
            invokeinterface org.hibernate.engine.jdbc.cursor.spi.RefCursorSupport.registerRefCursorParameter:(Ljava/sql/CallableStatement;Ljava/lang/String;)V
        45: .line 301
            goto 49
        46: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getServiceRegistry:()Lorg/hibernate/service/spi/ServiceRegistryImplementor;
        47: .line 304
            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
        48: .line 305
            aload 1 /* statement */
            iload 2 /* startIndex */
            invokeinterface org.hibernate.engine.jdbc.cursor.spi.RefCursorSupport.registerRefCursorParameter:(Ljava/sql/CallableStatement;I)V
        49: .line 308
      StackMap locals:
      StackMap stack:
            return
        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.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   50     0                           this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0   50     1                      statement  Ljava/sql/CallableStatement;
            0   50     2                     startIndex  I
            1   50     3                      typeToUse  Lorg/hibernate/type/Type;
            2   50     4                  sqlTypesToUse  [I
           22   26     5  canHandleMultiParamExtraction  Z
           27   31     5                              i  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
            Name  Flags
      statement   
      startIndex  

  public int[] getSqlTypes();
    descriptor: ()[I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
         0: .line 311
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.REF_CURSOR:Ljavax/persistence/ParameterMode;
            if_acmpne 2
         1: .line 313
            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 315
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.sqlTypes:[I
            areturn
        end local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;

  public T extract(java.sql.CallableStatement);
    descriptor: (Ljava/sql/CallableStatement;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.hibernate.procedure.internal.AbstractParameterRegistrationImpl this
        start local 1 // java.sql.CallableStatement statement
         0: .line 321
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.IN:Ljavax/persistence/ParameterMode;
            if_acmpne 2
         1: .line 322
            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 324
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.mode:Ljavax/persistence/ParameterMode;
            getstatic javax.persistence.ParameterMode.REF_CURSOR:Ljavax/persistence/ParameterMode;
            if_acmpne 4
         3: .line 325
            new org.hibernate.procedure.ParameterMisuseException
            dup
            ldc "REF_CURSOR parameters should be accessed via results"
            invokespecial org.hibernate.procedure.ParameterMisuseException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 329
      StackMap locals:
      StackMap stack:
            ldc Lorg/hibernate/type/ProcedureParameterExtractionAware;
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 330
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.hibernateType:Lorg/hibernate/type/Type;
            checkcast org.hibernate.type.ProcedureParameterExtractionAware
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.startIndex:I
            aload 0 /* this */
            invokevirtual org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.session:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.type.ProcedureParameterExtractionAware.extract:(Ljava/sql/CallableStatement;ILorg/hibernate/engine/spi/SessionImplementor;)Ljava/lang/Object;
         6: areturn
         7: .line 333
      StackMap locals:
      StackMap stack:
            aload 1 /* statement */
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.startIndex:I
            invokeinterface java.sql.CallableStatement.getObject:(I)Ljava/lang/Object;
         8: areturn
         9: .line 336
      StackMap locals:
      StackMap stack: java.sql.SQLException
            astore 2 /* e */
        start local 2 // java.sql.SQLException e
        10: .line 337
            aload 0 /* this */
            getfield org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.procedureCall:Lorg/hibernate/procedure/internal/ProcedureCallImpl;
            invokevirtual org.hibernate.procedure.internal.ProcedureCallImpl.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getSQLExceptionHelper:()Lorg/hibernate/engine/jdbc/spi/SqlExceptionHelper;
        11: .line 338
            aload 2 /* e */
        12: .line 339
            ldc "Unable to extract OUT/INOUT parameter value"
        13: .line 337
            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.procedure.internal.AbstractParameterRegistrationImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Lorg/hibernate/procedure/internal/AbstractParameterRegistrationImpl<TT;>;
            0   14     1  statement  Ljava/sql/CallableStatement;
           10   14     2          e  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           4     6       9  Class java.sql.SQLException
           7     8       9  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 52
            getstatic org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.$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.procedure.internal.AbstractParameterRegistrationImpl.$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;>Ljava/lang/Object;Lorg/hibernate/procedure/spi/ParameterRegistrationImplementor<TT;>;
SourceFile: "AbstractParameterRegistrationImpl.java"