public abstract class org.springframework.boot.diagnostics.AbstractFailureAnalyzer<T extends java.lang.Throwable> implements org.springframework.boot.diagnostics.FailureAnalyzer
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.boot.diagnostics.AbstractFailureAnalyzer
  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.springframework.boot.diagnostics.AbstractFailureAnalyzer this
         0: .line 29
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/diagnostics/AbstractFailureAnalyzer<TT;>;

  public org.springframework.boot.diagnostics.FailureAnalysis analyze(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Lorg/springframework/boot/diagnostics/FailureAnalysis;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
        start local 1 // java.lang.Throwable failure
         0: .line 33
            aload 0 /* this */
            aload 1 /* failure */
            aload 0 /* this */
            invokevirtual org.springframework.boot.diagnostics.AbstractFailureAnalyzer.getCauseType:()Ljava/lang/Class;
            invokevirtual org.springframework.boot.diagnostics.AbstractFailureAnalyzer.findCause:(Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/Throwable;
            astore 2 /* cause */
        start local 2 // java.lang.Throwable cause
         1: .line 34
            aload 2 /* cause */
            ifnull 3
         2: .line 35
            aload 0 /* this */
            aload 1 /* failure */
            aload 2 /* cause */
            invokevirtual org.springframework.boot.diagnostics.AbstractFailureAnalyzer.analyze:(Ljava/lang/Throwable;Ljava/lang/Throwable;)Lorg/springframework/boot/diagnostics/FailureAnalysis;
            areturn
         3: .line 37
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.lang.Throwable cause
        end local 1 // java.lang.Throwable failure
        end local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/springframework/boot/diagnostics/AbstractFailureAnalyzer<TT;>;
            0    4     1  failure  Ljava/lang/Throwable;
            1    4     2    cause  TT;
    MethodParameters:
         Name  Flags
      failure  

  protected abstract org.springframework.boot.diagnostics.FailureAnalysis analyze(java.lang.Throwable, T);
    descriptor: (Ljava/lang/Throwable;Ljava/lang/Throwable;)Lorg/springframework/boot/diagnostics/FailureAnalysis;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Ljava/lang/Throwable;TT;)Lorg/springframework/boot/diagnostics/FailureAnalysis;
    MethodParameters:
             Name  Flags
      rootFailure  
      cause        

  protected java.lang.Class<? extends T> getCauseType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
         0: .line 56
            ldc Lorg/springframework/boot/diagnostics/AbstractFailureAnalyzer;
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.springframework.core.ResolvableType.forClass:(Ljava/lang/Class;Ljava/lang/Class;)Lorg/springframework/core/ResolvableType;
            iconst_0
            newarray 10
            invokevirtual org.springframework.core.ResolvableType.resolveGeneric:([I)Ljava/lang/Class;
            areturn
        end local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/diagnostics/AbstractFailureAnalyzer<TT;>;
    Signature: ()Ljava/lang/Class<+TT;>;

  protected final <E extends java.lang.Throwable> E findCause(java.lang.Throwable, java.lang.Class<E>);
    descriptor: (Ljava/lang/Throwable;Ljava/lang/Class;)Ljava/lang/Throwable;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
        start local 1 // java.lang.Throwable failure
        start local 2 // java.lang.Class type
         0: .line 61
            goto 4
         1: .line 62
      StackMap locals:
      StackMap stack:
            aload 2 /* type */
            aload 1 /* failure */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 63
            aload 1 /* failure */
            areturn
         3: .line 65
      StackMap locals:
      StackMap stack:
            aload 1 /* failure */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 1 /* failure */
         4: .line 61
      StackMap locals:
      StackMap stack:
            aload 1 /* failure */
            ifnonnull 1
         5: .line 67
            aconst_null
            areturn
        end local 2 // java.lang.Class type
        end local 1 // java.lang.Throwable failure
        end local 0 // org.springframework.boot.diagnostics.AbstractFailureAnalyzer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/springframework/boot/diagnostics/AbstractFailureAnalyzer<TT;>;
            0    6     1  failure  Ljava/lang/Throwable;
            0    6     2     type  Ljava/lang/Class<TE;>;
    Signature: <E:Ljava/lang/Throwable;>(Ljava/lang/Throwable;Ljava/lang/Class<TE;>;)TE;
    MethodParameters:
         Name  Flags
      failure  
      type     
}
Signature: <T:Ljava/lang/Throwable;>Ljava/lang/Object;Lorg/springframework/boot/diagnostics/FailureAnalyzer;
SourceFile: "AbstractFailureAnalyzer.java"