public abstract class org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction implements org.hibernate.dialect.function.SQLFunction
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
         0: .line 28
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/function/AbstractAnsiTrimEmulationFunction;

  public final boolean hasArguments();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
         0: .line 31
            iconst_1
            ireturn
        end local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/function/AbstractAnsiTrimEmulationFunction;

  public final boolean hasParenthesesIfNoArguments();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
         0: .line 36
            iconst_0
            ireturn
        end local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/function/AbstractAnsiTrimEmulationFunction;

  public final org.hibernate.type.Type getReturnType(org.hibernate.type.Type, org.hibernate.engine.spi.Mapping);
    descriptor: (Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/Mapping;)Lorg/hibernate/type/Type;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
        start local 1 // org.hibernate.type.Type argumentType
        start local 2 // org.hibernate.engine.spi.Mapping mapping
         0: .line 41
            getstatic org.hibernate.type.StandardBasicTypes.STRING:Lorg/hibernate/type/StringType;
            areturn
        end local 2 // org.hibernate.engine.spi.Mapping mapping
        end local 1 // org.hibernate.type.Type argumentType
        end local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/hibernate/dialect/function/AbstractAnsiTrimEmulationFunction;
            0    1     1  argumentType  Lorg/hibernate/type/Type;
            0    1     2       mapping  Lorg/hibernate/engine/spi/Mapping;
    Exceptions:
      throws org.hibernate.QueryException
    MethodParameters:
              Name  Flags
      argumentType  
      mapping       

  public final java.lang.String render(org.hibernate.type.Type, java.util.List, org.hibernate.engine.spi.SessionFactoryImplementor);
    descriptor: (Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=12, args_size=4
        start local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
        start local 1 // org.hibernate.type.Type argumentType
        start local 2 // java.util.List args
        start local 3 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         0: .line 62
            aload 2 /* args */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 2
         1: .line 65
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveBothSpaceTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 2 /* args */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
         2: .line 67
      StackMap locals:
      StackMap stack:
            ldc "from"
            aload 2 /* args */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 70
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveBothSpaceTrimFromFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 2 /* args */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
         4: .line 78
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 4 /* leading */
        start local 4 // boolean leading
         5: .line 80
            iconst_1
            istore 5 /* trailing */
        start local 5 // boolean trailing
         6: .line 89
            iconst_1
            istore 8 /* potentialTrimCharacterArgIndex */
        start local 8 // int potentialTrimCharacterArgIndex
         7: .line 90
            aload 2 /* args */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* firstArg */
        start local 9 // java.lang.String firstArg
         8: .line 91
            ldc "leading"
            aload 9 /* firstArg */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 11
         9: .line 92
            iconst_0
            istore 5 /* trailing */
        10: .line 93
            goto 16
        11: .line 94
      StackMap locals: org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction org.hibernate.type.Type java.util.List org.hibernate.engine.spi.SessionFactoryImplementor int int top top int java.lang.String
      StackMap stack:
            ldc "trailing"
            aload 9 /* firstArg */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        12: .line 95
            iconst_0
            istore 4 /* leading */
        13: .line 96
            goto 16
        14: .line 97
      StackMap locals:
      StackMap stack:
            ldc "both"
            aload 9 /* firstArg */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 16
        15: .line 101
            iconst_0
            istore 8 /* potentialTrimCharacterArgIndex */
        16: .line 104
      StackMap locals:
      StackMap stack:
            aload 2 /* args */
            iload 8 /* potentialTrimCharacterArgIndex */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 10 /* potentialTrimCharacter */
        start local 10 // java.lang.String potentialTrimCharacter
        17: .line 105
            ldc "from"
            aload 10 /* potentialTrimCharacter */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 21
        18: .line 106
            ldc "' '"
            astore 6 /* trimCharacter */
        start local 6 // java.lang.String trimCharacter
        19: .line 107
            aload 2 /* args */
            iload 8 /* potentialTrimCharacterArgIndex */
            iconst_1
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* trimSource */
        start local 7 // java.lang.String trimSource
        20: .line 108
            goto 30
        end local 7 // java.lang.String trimSource
        end local 6 // java.lang.String trimCharacter
        21: .line 109
      StackMap locals: java.lang.String
      StackMap stack:
            iload 8 /* potentialTrimCharacterArgIndex */
            iconst_1
            iadd
            aload 2 /* args */
            invokeinterface java.util.List.size:()I
            if_icmplt 25
        22: .line 110
            ldc "' '"
            astore 6 /* trimCharacter */
        start local 6 // java.lang.String trimCharacter
        23: .line 111
            aload 10 /* potentialTrimCharacter */
            astore 7 /* trimSource */
        start local 7 // java.lang.String trimSource
        24: .line 112
            goto 30
        end local 7 // java.lang.String trimSource
        end local 6 // java.lang.String trimCharacter
        25: .line 114
      StackMap locals:
      StackMap stack:
            aload 10 /* potentialTrimCharacter */
            astore 6 /* trimCharacter */
        start local 6 // java.lang.String trimCharacter
        26: .line 115
            ldc "from"
            aload 2 /* args */
            iload 8 /* potentialTrimCharacterArgIndex */
            iconst_1
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 29
        27: .line 116
            aload 2 /* args */
            iload 8 /* potentialTrimCharacterArgIndex */
            iconst_2
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* trimSource */
        start local 7 // java.lang.String trimSource
        28: .line 117
            goto 30
        end local 7 // java.lang.String trimSource
        29: .line 119
      StackMap locals: org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction org.hibernate.type.Type java.util.List org.hibernate.engine.spi.SessionFactoryImplementor int int java.lang.String top int java.lang.String java.lang.String
      StackMap stack:
            aload 2 /* args */
            iload 8 /* potentialTrimCharacterArgIndex */
            iconst_1
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 7 /* trimSource */
        start local 7 // java.lang.String trimSource
        30: .line 123
      StackMap locals: org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction org.hibernate.type.Type java.util.List org.hibernate.engine.spi.SessionFactoryImplementor int int java.lang.String java.lang.String int java.lang.String java.lang.String
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 11 /* argsToUse */
        start local 11 // java.util.List argsToUse
        31: .line 124
            aload 11 /* argsToUse */
            aload 7 /* trimSource */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        32: .line 125
            aload 11 /* argsToUse */
            aload 6 /* trimCharacter */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        33: .line 127
            aload 6 /* trimCharacter */
            ldc "' '"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 39
        34: .line 128
            iload 4 /* leading */
            ifeq 36
            iload 5 /* trailing */
            ifeq 36
        35: .line 129
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveBothSpaceTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 11 /* argsToUse */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
        36: .line 131
      StackMap locals: java.util.List
      StackMap stack:
            iload 4 /* leading */
            ifeq 38
        37: .line 132
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveLeadingSpaceTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 11 /* argsToUse */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
        38: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveTrailingSpaceTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 11 /* argsToUse */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
        39: .line 139
      StackMap locals:
      StackMap stack:
            iload 4 /* leading */
            ifeq 41
            iload 5 /* trailing */
            ifeq 41
        40: .line 140
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveBothTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 11 /* argsToUse */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
        41: .line 142
      StackMap locals:
      StackMap stack:
            iload 4 /* leading */
            ifeq 43
        42: .line 143
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveLeadingTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 11 /* argsToUse */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
        43: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction.resolveTrailingTrimFunction:()Lorg/hibernate/dialect/function/SQLFunction;
            aload 1 /* argumentType */
            aload 11 /* argsToUse */
            aload 3 /* factory */
            invokeinterface org.hibernate.dialect.function.SQLFunction.render:(Lorg/hibernate/type/Type;Ljava/util/List;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            areturn
        end local 11 // java.util.List argsToUse
        end local 10 // java.lang.String potentialTrimCharacter
        end local 9 // java.lang.String firstArg
        end local 8 // int potentialTrimCharacterArgIndex
        end local 7 // java.lang.String trimSource
        end local 6 // java.lang.String trimCharacter
        end local 5 // boolean trailing
        end local 4 // boolean leading
        end local 3 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 2 // java.util.List args
        end local 1 // org.hibernate.type.Type argumentType
        end local 0 // org.hibernate.dialect.function.AbstractAnsiTrimEmulationFunction this
      LocalVariableTable:
        Start  End  Slot                            Name  Signature
            0   44     0                            this  Lorg/hibernate/dialect/function/AbstractAnsiTrimEmulationFunction;
            0   44     1                    argumentType  Lorg/hibernate/type/Type;
            0   44     2                            args  Ljava/util/List;
            0   44     3                         factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            5   44     4                         leading  Z
            6   44     5                        trailing  Z
           19   21     6                   trimCharacter  Ljava/lang/String;
           23   25     6                   trimCharacter  Ljava/lang/String;
           26   44     6                   trimCharacter  Ljava/lang/String;
           20   21     7                      trimSource  Ljava/lang/String;
           24   25     7                      trimSource  Ljava/lang/String;
           28   29     7                      trimSource  Ljava/lang/String;
           30   44     7                      trimSource  Ljava/lang/String;
            7   44     8  potentialTrimCharacterArgIndex  I
            8   44     9                        firstArg  Ljava/lang/String;
           17   44    10          potentialTrimCharacter  Ljava/lang/String;
           31   44    11                       argsToUse  Ljava/util/List<Ljava/lang/String;>;
    Exceptions:
      throws org.hibernate.QueryException
    MethodParameters:
              Name  Flags
      argumentType  
      args          
      factory       

  protected abstract org.hibernate.dialect.function.SQLFunction resolveBothSpaceTrimFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.hibernate.dialect.function.SQLFunction resolveBothSpaceTrimFromFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.hibernate.dialect.function.SQLFunction resolveLeadingSpaceTrimFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.hibernate.dialect.function.SQLFunction resolveTrailingSpaceTrimFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.hibernate.dialect.function.SQLFunction resolveBothTrimFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.hibernate.dialect.function.SQLFunction resolveLeadingTrimFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.hibernate.dialect.function.SQLFunction resolveTrailingTrimFunction();
    descriptor: ()Lorg/hibernate/dialect/function/SQLFunction;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
}
SourceFile: "AbstractAnsiTrimEmulationFunction.java"