public class org.springframework.aop.interceptor.CustomizableTraceInterceptor extends org.springframework.aop.interceptor.AbstractTraceInterceptor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.aop.interceptor.CustomizableTraceInterceptor
  super_class: org.springframework.aop.interceptor.AbstractTraceInterceptor
{
  public static final java.lang.String PLACEHOLDER_METHOD_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[methodName]"

  public static final java.lang.String PLACEHOLDER_TARGET_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[targetClassName]"

  public static final java.lang.String PLACEHOLDER_TARGET_CLASS_SHORT_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[targetClassShortName]"

  public static final java.lang.String PLACEHOLDER_RETURN_VALUE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[returnValue]"

  public static final java.lang.String PLACEHOLDER_ARGUMENT_TYPES;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[argumentTypes]"

  public static final java.lang.String PLACEHOLDER_ARGUMENTS;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[arguments]"

  public static final java.lang.String PLACEHOLDER_EXCEPTION;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[exception]"

  public static final java.lang.String PLACEHOLDER_INVOCATION_TIME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "$[invocationTime]"

  private static final java.lang.String DEFAULT_ENTER_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Entering method '$[methodName]' of class [$[targetClassName]]"

  private static final java.lang.String DEFAULT_EXIT_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Exiting method '$[methodName]' of class [$[targetClassName]]"

  private static final java.lang.String DEFAULT_EXCEPTION_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Exception thrown in method '$[methodName]' of class [$[targetClassName]]"

  private static final java.util.regex.Pattern PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Set<java.lang.Object> ALLOWED_PLACEHOLDERS;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/Object;>;

  private java.lang.String enterMessage;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String exitMessage;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String exceptionMessage;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 150
            ldc "\\$\\[\\p{Alpha}+\\]"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.springframework.aop.interceptor.CustomizableTraceInterceptor.PATTERN:Ljava/util/regex/Pattern;
         1: .line 156
            new org.springframework.core.Constants
            dup
            ldc Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            invokespecial org.springframework.core.Constants.<init>:(Ljava/lang/Class;)V
            ldc "PLACEHOLDER_"
            invokevirtual org.springframework.core.Constants.getValues:(Ljava/lang/String;)Ljava/util/Set;
         2: .line 155
            putstatic org.springframework.aop.interceptor.CustomizableTraceInterceptor.ALLOWED_PLACEHOLDERS:Ljava/util/Set;
         3: .line 156
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
         0: .line 72
            aload 0 /* this */
            invokespecial org.springframework.aop.interceptor.AbstractTraceInterceptor.<init>:()V
         1: .line 162
            aload 0 /* this */
            ldc "Entering method '$[methodName]' of class [$[targetClassName]]"
            putfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.enterMessage:Ljava/lang/String;
         2: .line 167
            aload 0 /* this */
            ldc "Exiting method '$[methodName]' of class [$[targetClassName]]"
            putfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exitMessage:Ljava/lang/String;
         3: .line 172
            aload 0 /* this */
            ldc "Exception thrown in method '$[methodName]' of class [$[targetClassName]]"
            putfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exceptionMessage:Ljava/lang/String;
         4: .line 72
            return
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;

  public void setEnterMessage(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // java.lang.String enterMessage
         0: .line 186
            aload 1 /* enterMessage */
            ldc "enterMessage must not be empty"
            invokestatic org.springframework.util.Assert.hasText:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 187
            aload 0 /* this */
            aload 1 /* enterMessage */
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.checkForInvalidPlaceholders:(Ljava/lang/String;)V
         2: .line 188
            aload 1 /* enterMessage */
            ldc "$[returnValue]"
         3: .line 189
            ldc "enterMessage cannot contain placeholder $[returnValue]"
         4: .line 188
            invokestatic org.springframework.util.Assert.doesNotContain:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         5: .line 190
            aload 1 /* enterMessage */
            ldc "$[exception]"
         6: .line 191
            ldc "enterMessage cannot contain placeholder $[exception]"
         7: .line 190
            invokestatic org.springframework.util.Assert.doesNotContain:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         8: .line 192
            aload 1 /* enterMessage */
            ldc "$[invocationTime]"
         9: .line 193
            ldc "enterMessage cannot contain placeholder $[invocationTime]"
        10: .line 192
            invokestatic org.springframework.util.Assert.doesNotContain:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
        11: .line 194
            aload 0 /* this */
            aload 1 /* enterMessage */
            putfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.enterMessage:Ljava/lang/String;
        12: .line 195
            return
        end local 1 // java.lang.String enterMessage
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0   13     1  enterMessage  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
              Name  Flags
      enterMessage  

  public void setExitMessage(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // java.lang.String exitMessage
         0: .line 210
            aload 1 /* exitMessage */
            ldc "exitMessage must not be empty"
            invokestatic org.springframework.util.Assert.hasText:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 211
            aload 0 /* this */
            aload 1 /* exitMessage */
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.checkForInvalidPlaceholders:(Ljava/lang/String;)V
         2: .line 212
            aload 1 /* exitMessage */
            ldc "$[exception]"
         3: .line 213
            ldc "exitMessage cannot contain placeholder$[exception]"
         4: .line 212
            invokestatic org.springframework.util.Assert.doesNotContain:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         5: .line 214
            aload 0 /* this */
            aload 1 /* exitMessage */
            putfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exitMessage:Ljava/lang/String;
         6: .line 215
            return
        end local 1 // java.lang.String exitMessage
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0    7     1  exitMessage  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      exitMessage  

  public void setExceptionMessage(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // java.lang.String exceptionMessage
         0: .line 229
            aload 1 /* exceptionMessage */
            ldc "exceptionMessage must not be empty"
            invokestatic org.springframework.util.Assert.hasText:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 230
            aload 0 /* this */
            aload 1 /* exceptionMessage */
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.checkForInvalidPlaceholders:(Ljava/lang/String;)V
         2: .line 231
            aload 1 /* exceptionMessage */
            ldc "$[returnValue]"
         3: .line 232
            ldc "exceptionMessage cannot contain placeholder $[returnValue]"
         4: .line 231
            invokestatic org.springframework.util.Assert.doesNotContain:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         5: .line 233
            aload 0 /* this */
            aload 1 /* exceptionMessage */
            putfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exceptionMessage:Ljava/lang/String;
         6: .line 234
            return
        end local 1 // java.lang.String exceptionMessage
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0    7     1  exceptionMessage  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      exceptionMessage  

  protected java.lang.Object invokeUnderTrace(org.aopalliance.intercept.MethodInvocation, org.apache.commons.logging.Log);
    descriptor: (Lorg/aopalliance/intercept/MethodInvocation;Lorg/apache/commons/logging/Log;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=10, args_size=3
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // org.aopalliance.intercept.MethodInvocation invocation
        start local 2 // org.apache.commons.logging.Log logger
         0: .line 248
            aload 1 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            invokestatic org.springframework.util.ClassUtils.getQualifiedMethodName:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         1: .line 249
            new org.springframework.util.StopWatch
            dup
            aload 3 /* name */
            invokespecial org.springframework.util.StopWatch.<init>:(Ljava/lang/String;)V
            astore 4 /* stopWatch */
        start local 4 // org.springframework.util.StopWatch stopWatch
         2: .line 250
            aconst_null
            astore 5 /* returnValue */
        start local 5 // java.lang.Object returnValue
         3: .line 251
            iconst_0
            istore 6 /* exitThroughException */
        start local 6 // boolean exitThroughException
         4: .line 253
            aload 4 /* stopWatch */
            aload 3 /* name */
            invokevirtual org.springframework.util.StopWatch.start:(Ljava/lang/String;)V
         5: .line 254
            aload 0 /* this */
            aload 2 /* logger */
         6: .line 255
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.enterMessage:Ljava/lang/String;
            aload 1 /* invocation */
            aconst_null
            aconst_null
            ldc -1
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.replacePlaceholders:(Ljava/lang/String;Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Object;Ljava/lang/Throwable;J)Ljava/lang/String;
         7: .line 254
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.writeToLog:(Lorg/apache/commons/logging/Log;Ljava/lang/String;)V
         8: .line 256
            aload 1 /* invocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.proceed:()Ljava/lang/Object;
            astore 5 /* returnValue */
         9: .line 257
            aload 5 /* returnValue */
            astore 9
        10: .line 269
            iload 6 /* exitThroughException */
            ifne 16
        11: .line 270
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.isRunning:()Z
            ifeq 13
        12: .line 271
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.stop:()V
        13: .line 273
      StackMap locals: org.springframework.aop.interceptor.CustomizableTraceInterceptor org.aopalliance.intercept.MethodInvocation org.apache.commons.logging.Log java.lang.String org.springframework.util.StopWatch java.lang.Object int top top java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 2 /* logger */
            aload 0 /* this */
        14: .line 274
            aload 0 /* this */
            getfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exitMessage:Ljava/lang/String;
            aload 1 /* invocation */
            aload 5 /* returnValue */
            aconst_null
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.getTotalTimeMillis:()J
        15: .line 273
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.replacePlaceholders:(Ljava/lang/String;Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Object;Ljava/lang/Throwable;J)Ljava/lang/String;
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.writeToLog:(Lorg/apache/commons/logging/Log;Ljava/lang/String;)V
        16: .line 257
      StackMap locals:
      StackMap stack:
            aload 9
            areturn
        17: .line 259
      StackMap locals: org.springframework.aop.interceptor.CustomizableTraceInterceptor org.aopalliance.intercept.MethodInvocation org.apache.commons.logging.Log java.lang.String org.springframework.util.StopWatch java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 7 /* ex */
        start local 7 // java.lang.Throwable ex
        18: .line 260
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.isRunning:()Z
            ifeq 20
        19: .line 261
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.stop:()V
        20: .line 263
      StackMap locals: java.lang.Throwable
      StackMap stack:
            iconst_1
            istore 6 /* exitThroughException */
        21: .line 264
            aload 0 /* this */
            aload 2 /* logger */
            aload 0 /* this */
        22: .line 265
            aload 0 /* this */
            getfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exceptionMessage:Ljava/lang/String;
            aload 1 /* invocation */
            aconst_null
            aload 7 /* ex */
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.getTotalTimeMillis:()J
        23: .line 264
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.replacePlaceholders:(Ljava/lang/String;Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Object;Ljava/lang/Throwable;J)Ljava/lang/String;
        24: .line 265
            aload 7 /* ex */
        25: .line 264
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.writeToLog:(Lorg/apache/commons/logging/Log;Ljava/lang/String;Ljava/lang/Throwable;)V
        26: .line 266
            aload 7 /* ex */
            athrow
        end local 7 // java.lang.Throwable ex
        27: .line 268
      StackMap locals: org.springframework.aop.interceptor.CustomizableTraceInterceptor org.aopalliance.intercept.MethodInvocation org.apache.commons.logging.Log java.lang.String org.springframework.util.StopWatch java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 8
        28: .line 269
            iload 6 /* exitThroughException */
            ifne 34
        29: .line 270
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.isRunning:()Z
            ifeq 31
        30: .line 271
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.stop:()V
        31: .line 273
      StackMap locals: org.springframework.aop.interceptor.CustomizableTraceInterceptor org.aopalliance.intercept.MethodInvocation org.apache.commons.logging.Log java.lang.String org.springframework.util.StopWatch java.lang.Object int top java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            aload 2 /* logger */
            aload 0 /* this */
        32: .line 274
            aload 0 /* this */
            getfield org.springframework.aop.interceptor.CustomizableTraceInterceptor.exitMessage:Ljava/lang/String;
            aload 1 /* invocation */
            aload 5 /* returnValue */
            aconst_null
            aload 4 /* stopWatch */
            invokevirtual org.springframework.util.StopWatch.getTotalTimeMillis:()J
        33: .line 273
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.replacePlaceholders:(Ljava/lang/String;Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Object;Ljava/lang/Throwable;J)Ljava/lang/String;
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.writeToLog:(Lorg/apache/commons/logging/Log;Ljava/lang/String;)V
        34: .line 276
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        end local 6 // boolean exitThroughException
        end local 5 // java.lang.Object returnValue
        end local 4 // org.springframework.util.StopWatch stopWatch
        end local 3 // java.lang.String name
        end local 2 // org.apache.commons.logging.Log logger
        end local 1 // org.aopalliance.intercept.MethodInvocation invocation
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   35     0                  this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0   35     1            invocation  Lorg/aopalliance/intercept/MethodInvocation;
            0   35     2                logger  Lorg/apache/commons/logging/Log;
            1   35     3                  name  Ljava/lang/String;
            2   35     4             stopWatch  Lorg/springframework/util/StopWatch;
            3   35     5           returnValue  Ljava/lang/Object;
            4   35     6  exitThroughException  Z
           18   27     7                    ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4    10      17  Class java.lang.Throwable
           4    10      27  any
          17    27      27  any
    Exceptions:
      throws java.lang.Throwable
    MethodParameters:
            Name  Flags
      invocation  
      logger      

  protected java.lang.String replacePlaceholders(java.lang.String, org.aopalliance.intercept.MethodInvocation, java.lang.Object, java.lang.Throwable, long);
    descriptor: (Ljava/lang/String;Lorg/aopalliance/intercept/MethodInvocation;Ljava/lang/Object;Ljava/lang/Throwable;J)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=11, args_size=6
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // java.lang.String message
        start local 2 // org.aopalliance.intercept.MethodInvocation methodInvocation
        start local 3 // java.lang.Object returnValue
        start local 4 // java.lang.Throwable throwable
        start local 5 // long invocationTime
         0: .line 298
            getstatic org.springframework.aop.interceptor.CustomizableTraceInterceptor.PATTERN:Ljava/util/regex/Pattern;
            aload 1 /* message */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 7 /* matcher */
        start local 7 // java.util.regex.Matcher matcher
         1: .line 300
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 8 /* output */
        start local 8 // java.lang.StringBuffer output
         2: .line 301
            goto 33
         3: .line 302
      StackMap locals: java.util.regex.Matcher java.lang.StringBuffer
      StackMap stack:
            aload 7 /* matcher */
            invokevirtual java.util.regex.Matcher.group:()Ljava/lang/String;
            astore 9 /* match */
        start local 9 // java.lang.String match
         4: .line 303
            ldc "$[methodName]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 304
            aload 7 /* matcher */
            aload 8 /* output */
            aload 2 /* methodInvocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
         6: .line 305
            goto 33
         7: .line 306
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "$[targetClassName]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
         8: .line 307
            aload 0 /* this */
            aload 2 /* methodInvocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getThis:()Ljava/lang/Object;
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.getClassForLogging:(Ljava/lang/Object;)Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 10 /* className */
        start local 10 // java.lang.String className
         9: .line 308
            aload 7 /* matcher */
            aload 8 /* output */
            aload 10 /* className */
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
        end local 10 // java.lang.String className
        10: .line 309
            goto 33
        11: .line 310
      StackMap locals:
      StackMap stack:
            ldc "$[targetClassShortName]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        12: .line 311
            aload 0 /* this */
            aload 2 /* methodInvocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getThis:()Ljava/lang/Object;
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.getClassForLogging:(Ljava/lang/Object;)Ljava/lang/Class;
            invokestatic org.springframework.util.ClassUtils.getShortName:(Ljava/lang/Class;)Ljava/lang/String;
            astore 10 /* shortName */
        start local 10 // java.lang.String shortName
        13: .line 312
            aload 7 /* matcher */
            aload 8 /* output */
            aload 10 /* shortName */
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
        end local 10 // java.lang.String shortName
        14: .line 313
            goto 33
        15: .line 314
      StackMap locals:
      StackMap stack:
            ldc "$[arguments]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        16: .line 315
            aload 7 /* matcher */
            aload 8 /* output */
        17: .line 316
            aload 2 /* methodInvocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getArguments:()[Ljava/lang/Object;
            invokestatic org.springframework.util.StringUtils.arrayToCommaDelimitedString:([Ljava/lang/Object;)Ljava/lang/String;
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
        18: .line 315
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
        19: .line 317
            goto 33
        20: .line 318
      StackMap locals:
      StackMap stack:
            ldc "$[argumentTypes]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        21: .line 319
            aload 0 /* this */
            aload 2 /* methodInvocation */
            aload 7 /* matcher */
            aload 8 /* output */
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.appendArgumentTypes:(Lorg/aopalliance/intercept/MethodInvocation;Ljava/util/regex/Matcher;Ljava/lang/StringBuffer;)V
        22: .line 320
            goto 33
        23: .line 321
      StackMap locals:
      StackMap stack:
            ldc "$[returnValue]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 26
        24: .line 322
            aload 0 /* this */
            aload 2 /* methodInvocation */
            aload 7 /* matcher */
            aload 8 /* output */
            aload 3 /* returnValue */
            invokevirtual org.springframework.aop.interceptor.CustomizableTraceInterceptor.appendReturnValue:(Lorg/aopalliance/intercept/MethodInvocation;Ljava/util/regex/Matcher;Ljava/lang/StringBuffer;Ljava/lang/Object;)V
        25: .line 323
            goto 33
        26: .line 324
      StackMap locals:
      StackMap stack:
            aload 4 /* throwable */
            ifnull 29
            ldc "$[exception]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 29
        27: .line 325
            aload 7 /* matcher */
            aload 8 /* output */
            aload 4 /* throwable */
            invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
        28: .line 326
            goto 33
        29: .line 327
      StackMap locals:
      StackMap stack:
            ldc "$[invocationTime]"
            aload 9 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 32
        30: .line 328
            aload 7 /* matcher */
            aload 8 /* output */
            lload 5 /* invocationTime */
            invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
        31: .line 329
            goto 33
        32: .line 332
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown placeholder ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* match */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 9 // java.lang.String match
        33: .line 301
      StackMap locals:
      StackMap stack:
            aload 7 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 3
        34: .line 335
            aload 7 /* matcher */
            aload 8 /* output */
            invokevirtual java.util.regex.Matcher.appendTail:(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
            pop
        35: .line 337
            aload 8 /* output */
            invokevirtual java.lang.StringBuffer.toString:()Ljava/lang/String;
            areturn
        end local 8 // java.lang.StringBuffer output
        end local 7 // java.util.regex.Matcher matcher
        end local 5 // long invocationTime
        end local 4 // java.lang.Throwable throwable
        end local 3 // java.lang.Object returnValue
        end local 2 // org.aopalliance.intercept.MethodInvocation methodInvocation
        end local 1 // java.lang.String message
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   36     0              this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0   36     1           message  Ljava/lang/String;
            0   36     2  methodInvocation  Lorg/aopalliance/intercept/MethodInvocation;
            0   36     3       returnValue  Ljava/lang/Object;
            0   36     4         throwable  Ljava/lang/Throwable;
            0   36     5    invocationTime  J
            1   36     7           matcher  Ljava/util/regex/Matcher;
            2   36     8            output  Ljava/lang/StringBuffer;
            4   33     9             match  Ljava/lang/String;
            9   10    10         className  Ljava/lang/String;
           13   14    10         shortName  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
      3:
        org.springframework.lang.Nullable()
      4:
    MethodParameters:
                  Name  Flags
      message           
      methodInvocation  
      returnValue       
      throwable         
      invocationTime    

  private void appendReturnValue(org.aopalliance.intercept.MethodInvocation, java.util.regex.Matcher, java.lang.StringBuffer, java.lang.Object);
    descriptor: (Lorg/aopalliance/intercept/MethodInvocation;Ljava/util/regex/Matcher;Ljava/lang/StringBuffer;Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // org.aopalliance.intercept.MethodInvocation methodInvocation
        start local 2 // java.util.regex.Matcher matcher
        start local 3 // java.lang.StringBuffer output
        start local 4 // java.lang.Object returnValue
         0: .line 352
            aload 1 /* methodInvocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            getstatic java.lang.Void.TYPE:Ljava/lang/Class;
            if_acmpne 3
         1: .line 353
            aload 2 /* matcher */
            aload 3 /* output */
            ldc "void"
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
         2: .line 354
            goto 7
         3: .line 355
      StackMap locals:
      StackMap stack:
            aload 4 /* returnValue */
            ifnonnull 6
         4: .line 356
            aload 2 /* matcher */
            aload 3 /* output */
            ldc "null"
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
         5: .line 357
            goto 7
         6: .line 359
      StackMap locals:
      StackMap stack:
            aload 2 /* matcher */
            aload 3 /* output */
            aload 4 /* returnValue */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
         7: .line 361
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.Object returnValue
        end local 3 // java.lang.StringBuffer output
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // org.aopalliance.intercept.MethodInvocation methodInvocation
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0    8     1  methodInvocation  Lorg/aopalliance/intercept/MethodInvocation;
            0    8     2           matcher  Ljava/util/regex/Matcher;
            0    8     3            output  Ljava/lang/StringBuffer;
            0    8     4       returnValue  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
                  Name  Flags
      methodInvocation  
      matcher           
      output            
      returnValue       

  private void appendArgumentTypes(org.aopalliance.intercept.MethodInvocation, java.util.regex.Matcher, java.lang.StringBuffer);
    descriptor: (Lorg/aopalliance/intercept/MethodInvocation;Ljava/util/regex/Matcher;Ljava/lang/StringBuffer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // org.aopalliance.intercept.MethodInvocation methodInvocation
        start local 2 // java.util.regex.Matcher matcher
        start local 3 // java.lang.StringBuffer output
         0: .line 374
            aload 1 /* methodInvocation */
            invokeinterface org.aopalliance.intercept.MethodInvocation.getMethod:()Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            astore 4 /* argumentTypes */
        start local 4 // java.lang.Class[] argumentTypes
         1: .line 375
            aload 4 /* argumentTypes */
            arraylength
            anewarray java.lang.String
            astore 5 /* argumentTypeShortNames */
        start local 5 // java.lang.String[] argumentTypeShortNames
         2: .line 376
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 6
         4: .line 377
      StackMap locals: java.lang.Class[] java.lang.String[] int
      StackMap stack:
            aload 5 /* argumentTypeShortNames */
            iload 6 /* i */
            aload 4 /* argumentTypes */
            iload 6 /* i */
            aaload
            invokestatic org.springframework.util.ClassUtils.getShortName:(Ljava/lang/Class;)Ljava/lang/String;
            aastore
         5: .line 376
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 6 /* i */
            aload 5 /* argumentTypeShortNames */
            arraylength
            if_icmplt 4
        end local 6 // int i
         7: .line 379
            aload 2 /* matcher */
            aload 3 /* output */
         8: .line 380
            aload 5 /* argumentTypeShortNames */
            invokestatic org.springframework.util.StringUtils.arrayToCommaDelimitedString:([Ljava/lang/Object;)Ljava/lang/String;
            invokestatic java.util.regex.Matcher.quoteReplacement:(Ljava/lang/String;)Ljava/lang/String;
         9: .line 379
            invokevirtual java.util.regex.Matcher.appendReplacement:(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
            pop
        10: .line 381
            return
        end local 5 // java.lang.String[] argumentTypeShortNames
        end local 4 // java.lang.Class[] argumentTypes
        end local 3 // java.lang.StringBuffer output
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // org.aopalliance.intercept.MethodInvocation methodInvocation
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   11     0                    this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0   11     1        methodInvocation  Lorg/aopalliance/intercept/MethodInvocation;
            0   11     2                 matcher  Ljava/util/regex/Matcher;
            0   11     3                  output  Ljava/lang/StringBuffer;
            1   11     4           argumentTypes  [Ljava/lang/Class;
            2   11     5  argumentTypeShortNames  [Ljava/lang/String;
            3    7     6                       i  I
    MethodParameters:
                  Name  Flags
      methodInvocation  
      matcher           
      output            

  private void checkForInvalidPlaceholders(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
        start local 1 // java.lang.String message
         0: .line 389
            getstatic org.springframework.aop.interceptor.CustomizableTraceInterceptor.PATTERN:Ljava/util/regex/Pattern;
            aload 1 /* message */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 2 /* matcher */
        start local 2 // java.util.regex.Matcher matcher
         1: .line 390
            goto 5
         2: .line 391
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.group:()Ljava/lang/String;
            astore 3 /* match */
        start local 3 // java.lang.String match
         3: .line 392
            getstatic org.springframework.aop.interceptor.CustomizableTraceInterceptor.ALLOWED_PLACEHOLDERS:Ljava/util/Set;
            aload 3 /* match */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 393
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Placeholder ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* match */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] is not valid"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String match
         5: .line 390
      StackMap locals:
      StackMap stack:
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 2
         6: .line 396
            return
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // java.lang.String message
        end local 0 // org.springframework.aop.interceptor.CustomizableTraceInterceptor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/springframework/aop/interceptor/CustomizableTraceInterceptor;
            0    7     1  message  Ljava/lang/String;
            1    7     2  matcher  Ljava/util/regex/Matcher;
            3    5     3    match  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
         Name  Flags
      message  
}
SourceFile: "CustomizableTraceInterceptor.java"