public abstract class org.springframework.jdbc.core.StatementCreatorUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.jdbc.core.StatementCreatorUtils
  super_class: java.lang.Object
{
  public static final java.lang.String IGNORE_GETPARAMETERTYPE_PROPERTY_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "spring.jdbc.getParameterType.ignore"

  static boolean shouldIgnoreGetParameterType;
    descriptor: Z
    flags: (0x0008) ACC_STATIC

  private static final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Map<java.lang.Class<?>, java.lang.Integer> javaTypeToSqlTypeMap;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/Integer;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 79
            ldc "spring.jdbc.getParameterType.ignore"
            invokestatic org.springframework.core.SpringProperties.getFlag:(Ljava/lang/String;)Z
            putstatic org.springframework.jdbc.core.StatementCreatorUtils.shouldIgnoreGetParameterType:Z
         1: .line 81
            ldc Lorg/springframework/jdbc/core/StatementCreatorUtils;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
         2: .line 83
            new java.util.HashMap
            dup
            bipush 32
            invokespecial java.util.HashMap.<init>:(I)V
            putstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
         3: .line 86
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            bipush 16
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 87
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Boolean;
            bipush 16
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 88
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            bipush -6
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 89
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Byte;
            bipush -6
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 90
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            iconst_5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 91
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Short;
            iconst_5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 92
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            iconst_4
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 93
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Integer;
            iconst_4
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 94
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            bipush -5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 95
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Long;
            bipush -5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 96
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/math/BigInteger;
            bipush -5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 97
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            bipush 6
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 98
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Float;
            bipush 6
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 99
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            bipush 8
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 100
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/lang/Double;
            bipush 8
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 101
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/math/BigDecimal;
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        19: .line 102
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/sql/Date;
            bipush 91
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        20: .line 103
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/sql/Time;
            bipush 92
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 104
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/sql/Timestamp;
            bipush 93
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 105
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/sql/Blob;
            sipush 2004
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        23: .line 106
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            ldc Ljava/sql/Clob;
            sipush 2005
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        24: .line 107
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.core.StatementCreatorUtils this
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.jdbc.core.StatementCreatorUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/core/StatementCreatorUtils;

  public static int javaTypeToSqlParameterType(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Class javaType
         0: .line 116
            aload 0 /* javaType */
            ifnonnull 2
         1: .line 117
            ldc -2147483648
            ireturn
         2: .line 119
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.javaTypeToSqlTypeMap:Ljava/util/Map;
            aload 0 /* javaType */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 1 /* sqlType */
        start local 1 // java.lang.Integer sqlType
         3: .line 120
            aload 1 /* sqlType */
            ifnull 5
         4: .line 121
            aload 1 /* sqlType */
            invokevirtual java.lang.Integer.intValue:()I
            ireturn
         5: .line 123
      StackMap locals: java.lang.Integer
      StackMap stack:
            ldc Ljava/lang/Number;
            aload 0 /* javaType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 7
         6: .line 124
            iconst_2
            ireturn
         7: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* javaType */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.isStringValue:(Ljava/lang/Class;)Z
            ifeq 9
         8: .line 127
            bipush 12
            ireturn
         9: .line 129
      StackMap locals:
      StackMap stack:
            aload 0 /* javaType */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.isDateValue:(Ljava/lang/Class;)Z
            ifne 10
            ldc Ljava/util/Calendar;
            aload 0 /* javaType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 11
        10: .line 130
      StackMap locals:
      StackMap stack:
            bipush 93
            ireturn
        11: .line 132
      StackMap locals:
      StackMap stack:
            ldc -2147483648
            ireturn
        end local 1 // java.lang.Integer sqlType
        end local 0 // java.lang.Class javaType
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0  javaType  Ljava/lang/Class<*>;
            3   12     1   sqlType  Ljava/lang/Integer;
    Signature: (Ljava/lang/Class<*>;)I
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      javaType  

  public static void setParameterValue(java.sql.PreparedStatement, int, org.springframework.jdbc.core.SqlParameter, java.lang.Object);
    descriptor: (Ljava/sql/PreparedStatement;ILorg/springframework/jdbc/core/SqlParameter;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // java.sql.PreparedStatement ps
        start local 1 // int paramIndex
        start local 2 // org.springframework.jdbc.core.SqlParameter param
        start local 3 // java.lang.Object inValue
         0: .line 147
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 2 /* param */
            invokevirtual org.springframework.jdbc.core.SqlParameter.getSqlType:()I
            aload 2 /* param */
            invokevirtual org.springframework.jdbc.core.SqlParameter.getTypeName:()Ljava/lang/String;
            aload 2 /* param */
            invokevirtual org.springframework.jdbc.core.SqlParameter.getScale:()Ljava/lang/Integer;
            aload 3 /* inValue */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal:(Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Object;)V
         1: .line 148
            return
        end local 3 // java.lang.Object inValue
        end local 2 // org.springframework.jdbc.core.SqlParameter param
        end local 1 // int paramIndex
        end local 0 // java.sql.PreparedStatement ps
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0          ps  Ljava/sql/PreparedStatement;
            0    2     1  paramIndex  I
            0    2     2       param  Lorg/springframework/jdbc/core/SqlParameter;
            0    2     3     inValue  Ljava/lang/Object;
    Exceptions:
      throws java.sql.SQLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      ps          
      paramIndex  
      param       
      inValue     

  public static void setParameterValue(java.sql.PreparedStatement, int, int, java.lang.Object);
    descriptor: (Ljava/sql/PreparedStatement;IILjava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // java.sql.PreparedStatement ps
        start local 1 // int paramIndex
        start local 2 // int sqlType
        start local 3 // java.lang.Object inValue
         0: .line 163
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 2 /* sqlType */
            aconst_null
            aconst_null
            aload 3 /* inValue */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal:(Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Object;)V
         1: .line 164
            return
        end local 3 // java.lang.Object inValue
        end local 2 // int sqlType
        end local 1 // int paramIndex
        end local 0 // java.sql.PreparedStatement ps
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0          ps  Ljava/sql/PreparedStatement;
            0    2     1  paramIndex  I
            0    2     2     sqlType  I
            0    2     3     inValue  Ljava/lang/Object;
    Exceptions:
      throws java.sql.SQLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      ps          
      paramIndex  
      sqlType     
      inValue     

  public static void setParameterValue(java.sql.PreparedStatement, int, int, java.lang.String, java.lang.Object);
    descriptor: (Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // java.sql.PreparedStatement ps
        start local 1 // int paramIndex
        start local 2 // int sqlType
        start local 3 // java.lang.String typeName
        start local 4 // java.lang.Object inValue
         0: .line 181
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 2 /* sqlType */
            aload 3 /* typeName */
            aconst_null
            aload 4 /* inValue */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal:(Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Object;)V
         1: .line 182
            return
        end local 4 // java.lang.Object inValue
        end local 3 // java.lang.String typeName
        end local 2 // int sqlType
        end local 1 // int paramIndex
        end local 0 // java.sql.PreparedStatement ps
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0          ps  Ljava/sql/PreparedStatement;
            0    2     1  paramIndex  I
            0    2     2     sqlType  I
            0    2     3    typeName  Ljava/lang/String;
            0    2     4     inValue  Ljava/lang/Object;
    Exceptions:
      throws java.sql.SQLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      ps          
      paramIndex  
      sqlType     
      typeName    
      inValue     

  private static void setParameterValueInternal(java.sql.PreparedStatement, int, int, java.lang.String, java.lang.Integer, java.lang.Object);
    descriptor: (Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=6
        start local 0 // java.sql.PreparedStatement ps
        start local 1 // int paramIndex
        start local 2 // int sqlType
        start local 3 // java.lang.String typeName
        start local 4 // java.lang.Integer scale
        start local 5 // java.lang.Object inValue
         0: .line 201
            aload 3 /* typeName */
            astore 6 /* typeNameToUse */
        start local 6 // java.lang.String typeNameToUse
         1: .line 202
            iload 2 /* sqlType */
            istore 7 /* sqlTypeToUse */
        start local 7 // int sqlTypeToUse
         2: .line 203
            aload 5 /* inValue */
            astore 8 /* inValueToUse */
        start local 8 // java.lang.Object inValueToUse
         3: .line 206
            aload 5 /* inValue */
            instanceof org.springframework.jdbc.core.SqlParameterValue
            ifeq 14
         4: .line 207
            aload 5 /* inValue */
            checkcast org.springframework.jdbc.core.SqlParameterValue
            astore 9 /* parameterValue */
        start local 9 // org.springframework.jdbc.core.SqlParameterValue parameterValue
         5: .line 208
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 9
         6: .line 209
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Overriding type info with runtime info from SqlParameterValue: column index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* paramIndex */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         7: .line 210
            ldc ", SQL type "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getSqlType:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ", type name "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getTypeName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 209
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         9: .line 212
      StackMap locals: java.sql.PreparedStatement int int java.lang.String java.lang.Integer java.lang.Object java.lang.String int java.lang.Object org.springframework.jdbc.core.SqlParameterValue
      StackMap stack:
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getSqlType:()I
            ldc -2147483648
            if_icmpeq 11
        10: .line 213
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getSqlType:()I
            istore 7 /* sqlTypeToUse */
        11: .line 215
      StackMap locals:
      StackMap stack:
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getTypeName:()Ljava/lang/String;
            ifnull 13
        12: .line 216
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getTypeName:()Ljava/lang/String;
            astore 6 /* typeNameToUse */
        13: .line 218
      StackMap locals:
      StackMap stack:
            aload 9 /* parameterValue */
            invokevirtual org.springframework.jdbc.core.SqlParameterValue.getValue:()Ljava/lang/Object;
            astore 8 /* inValueToUse */
        end local 9 // org.springframework.jdbc.core.SqlParameterValue parameterValue
        14: .line 221
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 24
        15: .line 222
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Setting SQL statement parameter value: column index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* paramIndex */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        16: .line 223
            ldc ", parameter value ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* inValueToUse */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        17: .line 224
            ldc "], value class ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* inValueToUse */
            ifnull 18
            aload 8 /* inValueToUse */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            goto 19
      StackMap locals: java.sql.PreparedStatement int int java.lang.String java.lang.Integer java.lang.Object java.lang.String int java.lang.Object
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
        18: ldc "null"
      StackMap locals: java.sql.PreparedStatement int int java.lang.String java.lang.Integer java.lang.Object java.lang.String int java.lang.Object
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
        19: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: .line 225
            ldc "], SQL type "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 7 /* sqlTypeToUse */
            ldc -2147483648
            if_icmpne 21
            ldc "unknown"
            goto 22
      StackMap locals: java.sql.PreparedStatement int int java.lang.String java.lang.Integer java.lang.Object java.lang.String int java.lang.Object
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
        21: iload 7 /* sqlTypeToUse */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
      StackMap locals: java.sql.PreparedStatement int int java.lang.String java.lang.Integer java.lang.Object java.lang.String int java.lang.Object
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
        22: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 222
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        24: .line 228
      StackMap locals:
      StackMap stack:
            aload 8 /* inValueToUse */
            ifnonnull 27
        25: .line 229
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 7 /* sqlTypeToUse */
            aload 6 /* typeNameToUse */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.setNull:(Ljava/sql/PreparedStatement;IILjava/lang/String;)V
        26: .line 230
            goto 28
        27: .line 232
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 7 /* sqlTypeToUse */
            aload 6 /* typeNameToUse */
            aload 4 /* scale */
            aload 8 /* inValueToUse */
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.setValue:(Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Object;)V
        28: .line 234
      StackMap locals:
      StackMap stack:
            return
        end local 8 // java.lang.Object inValueToUse
        end local 7 // int sqlTypeToUse
        end local 6 // java.lang.String typeNameToUse
        end local 5 // java.lang.Object inValue
        end local 4 // java.lang.Integer scale
        end local 3 // java.lang.String typeName
        end local 2 // int sqlType
        end local 1 // int paramIndex
        end local 0 // java.sql.PreparedStatement ps
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   29     0              ps  Ljava/sql/PreparedStatement;
            0   29     1      paramIndex  I
            0   29     2         sqlType  I
            0   29     3        typeName  Ljava/lang/String;
            0   29     4           scale  Ljava/lang/Integer;
            0   29     5         inValue  Ljava/lang/Object;
            1   29     6   typeNameToUse  Ljava/lang/String;
            2   29     7    sqlTypeToUse  I
            3   29     8    inValueToUse  Ljava/lang/Object;
            5   14     9  parameterValue  Lorg/springframework/jdbc/core/SqlParameterValue;
    Exceptions:
      throws java.sql.SQLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
      4:
        org.springframework.lang.Nullable()
      5:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      ps          
      paramIndex  
      sqlType     
      typeName    
      scale       
      inValue     

  private static void setNull(java.sql.PreparedStatement, int, int, java.lang.String);
    descriptor: (Ljava/sql/PreparedStatement;IILjava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // java.sql.PreparedStatement ps
        start local 1 // int paramIndex
        start local 2 // int sqlType
        start local 3 // java.lang.String typeName
         0: .line 243
            iload 2 /* sqlType */
            ldc -2147483648
            if_icmpeq 1
            iload 2 /* sqlType */
            sipush 1111
            if_icmpne 28
            aload 3 /* typeName */
            ifnonnull 28
         1: .line 244
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* useSetObject */
        start local 4 // boolean useSetObject
         2: .line 245
            aconst_null
            astore 5 /* sqlTypeToUse */
        start local 5 // java.lang.Integer sqlTypeToUse
         3: .line 246
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.shouldIgnoreGetParameterType:Z
            ifne 9
         4: .line 248
            aload 0 /* ps */
            invokeinterface java.sql.PreparedStatement.getParameterMetaData:()Ljava/sql/ParameterMetaData;
            iload 1 /* paramIndex */
            invokeinterface java.sql.ParameterMetaData.getParameterType:(I)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 5 /* sqlTypeToUse */
         5: .line 249
            goto 9
         6: .line 250
      StackMap locals: java.sql.PreparedStatement int int java.lang.String int java.lang.Integer
      StackMap stack: java.sql.SQLException
            astore 6 /* ex */
        start local 6 // java.sql.SQLException ex
         7: .line 251
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 9
         8: .line 252
            getstatic org.springframework.jdbc.core.StatementCreatorUtils.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "JDBC getParameterType call failed - using fallback method instead: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        end local 6 // java.sql.SQLException ex
         9: .line 256
      StackMap locals:
      StackMap stack:
            aload 5 /* sqlTypeToUse */
            ifnonnull 23
        10: .line 258
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 5 /* sqlTypeToUse */
        11: .line 259
            aload 0 /* ps */
            invokeinterface java.sql.PreparedStatement.getConnection:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.getMetaData:()Ljava/sql/DatabaseMetaData;
            astore 6 /* dbmd */
        start local 6 // java.sql.DatabaseMetaData dbmd
        12: .line 260
            aload 6 /* dbmd */
            invokeinterface java.sql.DatabaseMetaData.getDriverName:()Ljava/lang/String;
            astore 7 /* jdbcDriverName */
        start local 7 // java.lang.String jdbcDriverName
        13: .line 261
            aload 6 /* dbmd */
            invokeinterface java.sql.DatabaseMetaData.getDatabaseProductName:()Ljava/lang/String;
            astore 8 /* databaseProductName */
        start local 8 // java.lang.String databaseProductName
        14: .line 262
            aload 8 /* databaseProductName */
            ldc "Informix"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 16
        15: .line 263
            aload 7 /* jdbcDriverName */
            ldc "Microsoft"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 18
            aload 7 /* jdbcDriverName */
            ldc "SQL Server"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 18
        16: .line 265
      StackMap locals: java.sql.DatabaseMetaData java.lang.String java.lang.String
      StackMap stack:
            iconst_1
            istore 4 /* useSetObject */
        17: .line 266
            goto 23
        18: .line 267
      StackMap locals:
      StackMap stack:
            aload 8 /* databaseProductName */
            ldc "DB2"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 22
        19: .line 268
            aload 7 /* jdbcDriverName */
            ldc "jConnect"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 22
        20: .line 269
            aload 7 /* jdbcDriverName */
            ldc "SQLServer"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 22
        21: .line 270
            aload 7 /* jdbcDriverName */
            ldc "Apache Derby"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 23
        22: .line 271
      StackMap locals:
      StackMap stack:
            bipush 12
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            astore 5 /* sqlTypeToUse */
        end local 8 // java.lang.String databaseProductName
        end local 7 // java.lang.String jdbcDriverName
        end local 6 // java.sql.DatabaseMetaData dbmd
        23: .line 274
      StackMap locals:
      StackMap stack:
            iload 4 /* useSetObject */
            ifeq 26
        24: .line 275
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aconst_null
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;)V
        25: .line 276
            goto 32
        26: .line 278
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* sqlTypeToUse */
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface java.sql.PreparedStatement.setNull:(II)V
        end local 5 // java.lang.Integer sqlTypeToUse
        end local 4 // boolean useSetObject
        27: .line 280
            goto 32
        28: .line 281
      StackMap locals:
      StackMap stack:
            aload 3 /* typeName */
            ifnull 31
        29: .line 282
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 2 /* sqlType */
            aload 3 /* typeName */
            invokeinterface java.sql.PreparedStatement.setNull:(IILjava/lang/String;)V
        30: .line 283
            goto 32
        31: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 2 /* sqlType */
            invokeinterface java.sql.PreparedStatement.setNull:(II)V
        32: .line 287
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.String typeName
        end local 2 // int sqlType
        end local 1 // int paramIndex
        end local 0 // java.sql.PreparedStatement ps
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   33     0                   ps  Ljava/sql/PreparedStatement;
            0   33     1           paramIndex  I
            0   33     2              sqlType  I
            0   33     3             typeName  Ljava/lang/String;
            2   27     4         useSetObject  Z
            3   27     5         sqlTypeToUse  Ljava/lang/Integer;
            7    9     6                   ex  Ljava/sql/SQLException;
           12   23     6                 dbmd  Ljava/sql/DatabaseMetaData;
           13   23     7       jdbcDriverName  Ljava/lang/String;
           14   23     8  databaseProductName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           4     5       6  Class java.sql.SQLException
    Exceptions:
      throws java.sql.SQLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      ps          
      paramIndex  
      sqlType     
      typeName    

  private static void setValue(java.sql.PreparedStatement, int, int, java.lang.String, java.lang.Integer, java.lang.Object);
    descriptor: (Ljava/sql/PreparedStatement;IILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=6
        start local 0 // java.sql.PreparedStatement ps
        start local 1 // int paramIndex
        start local 2 // int sqlType
        start local 3 // java.lang.String typeName
        start local 4 // java.lang.Integer scale
        start local 5 // java.lang.Object inValue
         0: .line 292
            aload 5 /* inValue */
            instanceof org.springframework.jdbc.core.SqlTypeValue
            ifeq 3
         1: .line 293
            aload 5 /* inValue */
            checkcast org.springframework.jdbc.core.SqlTypeValue
            aload 0 /* ps */
            iload 1 /* paramIndex */
            iload 2 /* sqlType */
            aload 3 /* typeName */
            invokeinterface org.springframework.jdbc.core.SqlTypeValue.setTypeValue:(Ljava/sql/PreparedStatement;IILjava/lang/String;)V
         2: .line 294
            goto 95
         3: .line 295
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            instanceof org.springframework.jdbc.support.SqlValue
            ifeq 6
         4: .line 296
            aload 5 /* inValue */
            checkcast org.springframework.jdbc.support.SqlValue
            aload 0 /* ps */
            iload 1 /* paramIndex */
            invokeinterface org.springframework.jdbc.support.SqlValue.setValue:(Ljava/sql/PreparedStatement;I)V
         5: .line 297
            goto 95
         6: .line 298
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            bipush 12
            if_icmpeq 7
            iload 2 /* sqlType */
            iconst_m1
            if_icmpne 9
         7: .line 299
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
         8: .line 300
            goto 95
         9: .line 301
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            bipush -9
            if_icmpeq 10
            iload 2 /* sqlType */
            bipush -16
            if_icmpne 12
        10: .line 302
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokeinterface java.sql.PreparedStatement.setNString:(ILjava/lang/String;)V
        11: .line 303
            goto 95
        12: .line 304
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            sipush 2005
            if_icmpeq 13
            iload 2 /* sqlType */
            sipush 2011
            if_icmpne 26
      StackMap locals:
      StackMap stack:
        13: aload 5 /* inValue */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.isStringValue:(Ljava/lang/Class;)Z
            ifeq 26
        14: .line 305
            aload 5 /* inValue */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 6 /* strVal */
        start local 6 // java.lang.String strVal
        15: .line 306
            aload 6 /* strVal */
            invokevirtual java.lang.String.length:()I
            sipush 4000
            if_icmple 21
        16: .line 309
            iload 2 /* sqlType */
            sipush 2011
            if_icmpne 19
        17: .line 310
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.io.StringReader
            dup
            aload 6 /* strVal */
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            aload 6 /* strVal */
            invokevirtual java.lang.String.length:()I
            i2l
            invokeinterface java.sql.PreparedStatement.setNClob:(ILjava/io/Reader;J)V
        18: .line 311
            goto 20
        19: .line 313
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.io.StringReader
            dup
            aload 6 /* strVal */
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            aload 6 /* strVal */
            invokevirtual java.lang.String.length:()I
            i2l
            invokeinterface java.sql.PreparedStatement.setClob:(ILjava/io/Reader;J)V
        20: .line 315
      StackMap locals:
      StackMap stack:
            return
        21: .line 319
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            sipush 2011
            if_icmpne 24
        22: .line 320
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 6 /* strVal */
            invokeinterface java.sql.PreparedStatement.setNString:(ILjava/lang/String;)V
        23: .line 321
            goto 95
        24: .line 323
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 6 /* strVal */
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        end local 6 // java.lang.String strVal
        25: .line 326
            goto 95
        26: .line 327
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            iconst_3
            if_icmpeq 27
            iload 2 /* sqlType */
            iconst_2
            if_icmpne 35
        27: .line 328
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            instanceof java.math.BigDecimal
            ifeq 30
        28: .line 329
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            checkcast java.math.BigDecimal
            invokeinterface java.sql.PreparedStatement.setBigDecimal:(ILjava/math/BigDecimal;)V
        29: .line 330
            goto 95
        30: .line 331
      StackMap locals:
      StackMap stack:
            aload 4 /* scale */
            ifnull 33
        31: .line 332
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            iload 2 /* sqlType */
            aload 4 /* scale */
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;II)V
        32: .line 333
            goto 95
        33: .line 335
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            iload 2 /* sqlType */
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;I)V
        34: .line 337
            goto 95
        35: .line 338
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            bipush 16
            if_icmpne 41
        36: .line 339
            aload 5 /* inValue */
            instanceof java.lang.Boolean
            ifeq 39
        37: .line 340
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokeinterface java.sql.PreparedStatement.setBoolean:(IZ)V
        38: .line 341
            goto 95
        39: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            bipush 16
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;I)V
        40: .line 345
            goto 95
        41: .line 346
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            bipush 91
            if_icmpne 54
        42: .line 347
            aload 5 /* inValue */
            instanceof java.util.Date
            ifeq 48
        43: .line 348
            aload 5 /* inValue */
            instanceof java.sql.Date
            ifeq 46
        44: .line 349
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            checkcast java.sql.Date
            invokeinterface java.sql.PreparedStatement.setDate:(ILjava/sql/Date;)V
        45: .line 350
            goto 95
        46: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Date
            dup
            aload 5 /* inValue */
            checkcast java.util.Date
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Date.<init>:(J)V
            invokeinterface java.sql.PreparedStatement.setDate:(ILjava/sql/Date;)V
        47: .line 354
            goto 95
        48: .line 355
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            instanceof java.util.Calendar
            ifeq 52
        49: .line 356
            aload 5 /* inValue */
            checkcast java.util.Calendar
            astore 6 /* cal */
        start local 6 // java.util.Calendar cal
        50: .line 357
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Date
            dup
            aload 6 /* cal */
            invokevirtual java.util.Calendar.getTime:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Date.<init>:(J)V
            aload 6 /* cal */
            invokeinterface java.sql.PreparedStatement.setDate:(ILjava/sql/Date;Ljava/util/Calendar;)V
        end local 6 // java.util.Calendar cal
        51: .line 358
            goto 95
        52: .line 360
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            bipush 91
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;I)V
        53: .line 362
            goto 95
        54: .line 363
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            bipush 92
            if_icmpne 67
        55: .line 364
            aload 5 /* inValue */
            instanceof java.util.Date
            ifeq 61
        56: .line 365
            aload 5 /* inValue */
            instanceof java.sql.Time
            ifeq 59
        57: .line 366
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            checkcast java.sql.Time
            invokeinterface java.sql.PreparedStatement.setTime:(ILjava/sql/Time;)V
        58: .line 367
            goto 95
        59: .line 369
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Time
            dup
            aload 5 /* inValue */
            checkcast java.util.Date
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Time.<init>:(J)V
            invokeinterface java.sql.PreparedStatement.setTime:(ILjava/sql/Time;)V
        60: .line 371
            goto 95
        61: .line 372
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            instanceof java.util.Calendar
            ifeq 65
        62: .line 373
            aload 5 /* inValue */
            checkcast java.util.Calendar
            astore 6 /* cal */
        start local 6 // java.util.Calendar cal
        63: .line 374
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Time
            dup
            aload 6 /* cal */
            invokevirtual java.util.Calendar.getTime:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Time.<init>:(J)V
            aload 6 /* cal */
            invokeinterface java.sql.PreparedStatement.setTime:(ILjava/sql/Time;Ljava/util/Calendar;)V
        end local 6 // java.util.Calendar cal
        64: .line 375
            goto 95
        65: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            bipush 92
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;I)V
        66: .line 379
            goto 95
        67: .line 380
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            bipush 93
            if_icmpne 80
        68: .line 381
            aload 5 /* inValue */
            instanceof java.util.Date
            ifeq 74
        69: .line 382
            aload 5 /* inValue */
            instanceof java.sql.Timestamp
            ifeq 72
        70: .line 383
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            checkcast java.sql.Timestamp
            invokeinterface java.sql.PreparedStatement.setTimestamp:(ILjava/sql/Timestamp;)V
        71: .line 384
            goto 95
        72: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Timestamp
            dup
            aload 5 /* inValue */
            checkcast java.util.Date
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Timestamp.<init>:(J)V
            invokeinterface java.sql.PreparedStatement.setTimestamp:(ILjava/sql/Timestamp;)V
        73: .line 388
            goto 95
        74: .line 389
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            instanceof java.util.Calendar
            ifeq 78
        75: .line 390
            aload 5 /* inValue */
            checkcast java.util.Calendar
            astore 6 /* cal */
        start local 6 // java.util.Calendar cal
        76: .line 391
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Timestamp
            dup
            aload 6 /* cal */
            invokevirtual java.util.Calendar.getTime:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Timestamp.<init>:(J)V
            aload 6 /* cal */
            invokeinterface java.sql.PreparedStatement.setTimestamp:(ILjava/sql/Timestamp;Ljava/util/Calendar;)V
        end local 6 // java.util.Calendar cal
        77: .line 392
            goto 95
        78: .line 394
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            bipush 93
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;I)V
        79: .line 396
            goto 95
        80: .line 397
      StackMap locals:
      StackMap stack:
            iload 2 /* sqlType */
            ldc -2147483648
            if_icmpeq 82
            iload 2 /* sqlType */
            sipush 1111
            if_icmpne 94
        81: .line 398
            ldc "Oracle"
            aload 0 /* ps */
            invokeinterface java.sql.PreparedStatement.getConnection:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.getMetaData:()Ljava/sql/DatabaseMetaData;
            invokeinterface java.sql.DatabaseMetaData.getDatabaseProductName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 94
        82: .line 399
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.isStringValue:(Ljava/lang/Class;)Z
            ifeq 85
        83: .line 400
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokeinterface java.sql.PreparedStatement.setString:(ILjava/lang/String;)V
        84: .line 401
            goto 95
        85: .line 402
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.isDateValue:(Ljava/lang/Class;)Z
            ifeq 88
        86: .line 403
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Timestamp
            dup
            aload 5 /* inValue */
            checkcast java.util.Date
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Timestamp.<init>:(J)V
            invokeinterface java.sql.PreparedStatement.setTimestamp:(ILjava/sql/Timestamp;)V
        87: .line 404
            goto 95
        88: .line 405
      StackMap locals:
      StackMap stack:
            aload 5 /* inValue */
            instanceof java.util.Calendar
            ifeq 92
        89: .line 406
            aload 5 /* inValue */
            checkcast java.util.Calendar
            astore 6 /* cal */
        start local 6 // java.util.Calendar cal
        90: .line 407
            aload 0 /* ps */
            iload 1 /* paramIndex */
            new java.sql.Timestamp
            dup
            aload 6 /* cal */
            invokevirtual java.util.Calendar.getTime:()Ljava/util/Date;
            invokevirtual java.util.Date.getTime:()J
            invokespecial java.sql.Timestamp.<init>:(J)V
            aload 6 /* cal */
            invokeinterface java.sql.PreparedStatement.setTimestamp:(ILjava/sql/Timestamp;Ljava/util/Calendar;)V
        end local 6 // java.util.Calendar cal
        91: .line 408
            goto 95
        92: .line 411
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;)V
        93: .line 413
            goto 95
        94: .line 416
      StackMap locals:
      StackMap stack:
            aload 0 /* ps */
            iload 1 /* paramIndex */
            aload 5 /* inValue */
            iload 2 /* sqlType */
            invokeinterface java.sql.PreparedStatement.setObject:(ILjava/lang/Object;I)V
        95: .line 418
      StackMap locals:
      StackMap stack:
            return
        end local 5 // java.lang.Object inValue
        end local 4 // java.lang.Integer scale
        end local 3 // java.lang.String typeName
        end local 2 // int sqlType
        end local 1 // int paramIndex
        end local 0 // java.sql.PreparedStatement ps
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   96     0          ps  Ljava/sql/PreparedStatement;
            0   96     1  paramIndex  I
            0   96     2     sqlType  I
            0   96     3    typeName  Ljava/lang/String;
            0   96     4       scale  Ljava/lang/Integer;
            0   96     5     inValue  Ljava/lang/Object;
           15   25     6      strVal  Ljava/lang/String;
           50   51     6         cal  Ljava/util/Calendar;
           63   64     6         cal  Ljava/util/Calendar;
           76   77     6         cal  Ljava/util/Calendar;
           90   91     6         cal  Ljava/util/Calendar;
    Exceptions:
      throws java.sql.SQLException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
      4:
        org.springframework.lang.Nullable()
      5:
    MethodParameters:
            Name  Flags
      ps          
      paramIndex  
      sqlType     
      typeName    
      scale       
      inValue     

  private static boolean isStringValue(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class inValueType
         0: .line 425
            ldc Ljava/lang/CharSequence;
            aload 0 /* inValueType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         1: .line 426
            ldc Ljava/io/StringWriter;
            aload 0 /* inValueType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 3
         2: .line 425
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 0 // java.lang.Class inValueType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0  inValueType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
             Name  Flags
      inValueType  

  private static boolean isDateValue(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class inValueType
         0: .line 434
            ldc Ljava/util/Date;
            aload 0 /* inValueType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 5
         1: .line 435
            ldc Ljava/sql/Date;
            aload 0 /* inValueType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 5
         2: .line 436
            ldc Ljava/sql/Time;
            aload 0 /* inValueType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 5
         3: .line 437
            ldc Ljava/sql/Timestamp;
            aload 0 /* inValueType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 5
         4: .line 434
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
        end local 0 // java.lang.Class inValueType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0  inValueType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
             Name  Flags
      inValueType  

  public static void cleanupParameters(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)V
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object[] paramValues
         0: .line 448
            aload 0 /* paramValues */
            ifnull 2
         1: .line 449
            aload 0 /* paramValues */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.springframework.jdbc.core.StatementCreatorUtils.cleanupParameters:(Ljava/util/Collection;)V
         2: .line 451
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object[] paramValues
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  paramValues  [Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      paramValues  

  public static void cleanupParameters(java.util.Collection<?>);
    descriptor: (Ljava/util/Collection;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // java.util.Collection paramValues
         0: .line 461
            aload 0 /* paramValues */
            ifnull 9
         1: .line 462
            aload 0 /* paramValues */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 8
      StackMap locals: java.util.Collection top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 1 /* inValue */
        start local 1 // java.lang.Object inValue
         3: .line 463
            aload 1 /* inValue */
            instanceof org.springframework.jdbc.core.DisposableSqlTypeValue
            ifeq 6
         4: .line 464
            aload 1 /* inValue */
            checkcast org.springframework.jdbc.core.DisposableSqlTypeValue
            invokeinterface org.springframework.jdbc.core.DisposableSqlTypeValue.cleanup:()V
         5: .line 465
            goto 8
         6: .line 466
      StackMap locals: java.util.Collection java.lang.Object java.util.Iterator
      StackMap stack:
            aload 1 /* inValue */
            instanceof org.springframework.jdbc.support.SqlValue
            ifeq 8
         7: .line 467
            aload 1 /* inValue */
            checkcast org.springframework.jdbc.support.SqlValue
            invokeinterface org.springframework.jdbc.support.SqlValue.cleanup:()V
        end local 1 // java.lang.Object inValue
         8: .line 462
      StackMap locals: java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         9: .line 471
      StackMap locals: java.util.Collection
      StackMap stack:
            return
        end local 0 // java.util.Collection paramValues
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0  paramValues  Ljava/util/Collection<*>;
            3    8     1      inValue  Ljava/lang/Object;
    Signature: (Ljava/util/Collection<*>;)V
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      paramValues  
}
SourceFile: "StatementCreatorUtils.java"