public class org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator extends org.springframework.boot.actuate.health.AbstractHealthIndicator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator
  super_class: org.springframework.boot.actuate.health.AbstractHealthIndicator
{
  private final org.springframework.boot.availability.ApplicationAvailability applicationAvailability;
    descriptor: Lorg/springframework/boot/availability/ApplicationAvailability;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Class<? extends org.springframework.boot.availability.AvailabilityState> stateType;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<+Lorg/springframework/boot/availability/AvailabilityState;>;

  private final java.util.Map<org.springframework.boot.availability.AvailabilityState, org.springframework.boot.actuate.health.Status> statusMappings;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/springframework/boot/availability/AvailabilityState;Lorg/springframework/boot/actuate/health/Status;>;

  public <S extends org.springframework.boot.availability.AvailabilityState> void <init>(org.springframework.boot.availability.ApplicationAvailability, java.lang.Class<S>, java.util.function.Consumer<org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator$StatusMappings<S>>);
    descriptor: (Lorg/springframework/boot/availability/ApplicationAvailability;Ljava/lang/Class;Ljava/util/function/Consumer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
        start local 1 // org.springframework.boot.availability.ApplicationAvailability applicationAvailability
        start local 2 // java.lang.Class stateType
        start local 3 // java.util.function.Consumer statusMappings
         0: .line 55
            aload 0 /* this */
            invokespecial org.springframework.boot.actuate.health.AbstractHealthIndicator.<init>:()V
         1: .line 46
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.statusMappings:Ljava/util/Map;
         2: .line 58
            aload 1 /* applicationAvailability */
            ldc "ApplicationAvailability must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         3: .line 59
            aload 2 /* stateType */
            ldc "StateType must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         4: .line 60
            aload 3 /* statusMappings */
            ldc "StatusMappings must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         5: .line 61
            aload 0 /* this */
            aload 1 /* applicationAvailability */
            putfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.applicationAvailability:Lorg/springframework/boot/availability/ApplicationAvailability;
         6: .line 62
            aload 0 /* this */
            aload 2 /* stateType */
            putfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.stateType:Ljava/lang/Class;
         7: .line 63
            aload 3 /* statusMappings */
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.statusMappings:Ljava/util/Map;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic add(Ljava/util/Map;)Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator$StatusMappings;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Lorg/springframework/boot/availability/AvailabilityState;Lorg/springframework/boot/actuate/health/Status;)V
                  java/util/Map.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; (9 itf)
                  (Lorg/springframework/boot/availability/AvailabilityState;Lorg/springframework/boot/actuate/health/Status;)V
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         8: .line 64
            aload 0 /* this */
            aload 2 /* stateType */
            invokevirtual org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.assertAllEnumsMapped:(Ljava/lang/Class;)V
         9: .line 65
            return
        end local 3 // java.util.function.Consumer statusMappings
        end local 2 // java.lang.Class stateType
        end local 1 // org.springframework.boot.availability.ApplicationAvailability applicationAvailability
        end local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   10     0                     this  Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator;
            0   10     1  applicationAvailability  Lorg/springframework/boot/availability/ApplicationAvailability;
            0   10     2                stateType  Ljava/lang/Class<TS;>;
            0   10     3           statusMappings  Ljava/util/function/Consumer<Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator$StatusMappings<TS;>;>;
    Signature: <S::Lorg/springframework/boot/availability/AvailabilityState;>(Lorg/springframework/boot/availability/ApplicationAvailability;Ljava/lang/Class<TS;>;Ljava/util/function/Consumer<Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator$StatusMappings<TS;>;>;)V
    MethodParameters:
                         Name  Flags
      applicationAvailability  
      stateType                
      statusMappings           

  private <S extends org.springframework.boot.availability.AvailabilityState> void assertAllEnumsMapped(java.lang.Class<S>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
        start local 1 // java.lang.Class stateType
         0: .line 69
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.statusMappings:Ljava/util/Map;
            aconst_null
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 8
            ldc Ljava/lang/Enum;
            aload 1 /* stateType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 8
         1: .line 70
            aload 1 /* stateType */
            invokestatic java.util.EnumSet.allOf:(Ljava/lang/Class;)Ljava/util/EnumSet;
            astore 2 /* elements */
        start local 2 // java.util.EnumSet elements
         2: .line 71
            aload 2 /* elements */
            invokevirtual java.util.EnumSet.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator java.lang.Class java.util.EnumSet top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 3 /* element */
        start local 3 // java.lang.Object element
         4: .line 72
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.statusMappings:Ljava/util/Map;
            aload 3 /* element */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
         5: .line 73
            aload 3 /* element */
            invokedynamic get(Ljava/lang/Object;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  org/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator.lambda$1(Ljava/lang/Object;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
         6: .line 72
            invokestatic org.springframework.util.Assert.isTrue:(ZLjava/util/function/Supplier;)V
        end local 3 // java.lang.Object element
         7: .line 71
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        end local 2 // java.util.EnumSet elements
         8: .line 76
      StackMap locals: org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator java.lang.Class
      StackMap stack:
            return
        end local 1 // java.lang.Class stateType
        end local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator;
            0    9     1  stateType  Ljava/lang/Class<TS;>;
            2    8     2   elements  Ljava/util/EnumSet;
            4    7     3    element  Ljava/lang/Object;
    Signature: <S::Lorg/springframework/boot/availability/AvailabilityState;>(Ljava/lang/Class<TS;>;)V
    MethodParameters:
           Name  Flags
      stateType  

  protected void doHealthCheck(org.springframework.boot.actuate.health.Health$Builder);
    descriptor: (Lorg/springframework/boot/actuate/health/Health$Builder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
        start local 1 // org.springframework.boot.actuate.health.Health$Builder builder
         0: .line 80
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.applicationAvailability:Lorg/springframework/boot/availability/ApplicationAvailability;
            invokevirtual org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.getState:(Lorg/springframework/boot/availability/ApplicationAvailability;)Lorg/springframework/boot/availability/AvailabilityState;
            astore 2 /* state */
        start local 2 // org.springframework.boot.availability.AvailabilityState state
         1: .line 81
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.statusMappings:Ljava/util/Map;
            aload 2 /* state */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.boot.actuate.health.Status
            astore 3 /* status */
        start local 3 // org.springframework.boot.actuate.health.Status status
         2: .line 82
            aload 3 /* status */
            ifnonnull 4
         3: .line 83
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.statusMappings:Ljava/util/Map;
            aconst_null
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.boot.actuate.health.Status
            astore 3 /* status */
         4: .line 85
      StackMap locals: org.springframework.boot.availability.AvailabilityState org.springframework.boot.actuate.health.Status
      StackMap stack:
            aload 3 /* status */
            ifnull 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: aload 2 /* state */
            invokedynamic get(Lorg/springframework/boot/availability/AvailabilityState;)Ljava/util/function/Supplier;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/lang/Object;
                  org/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator.lambda$2(Lorg/springframework/boot/availability/AvailabilityState;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokestatic org.springframework.util.Assert.state:(ZLjava/util/function/Supplier;)V
         7: .line 86
            aload 1 /* builder */
            aload 3 /* status */
            invokevirtual org.springframework.boot.actuate.health.Health$Builder.status:(Lorg/springframework/boot/actuate/health/Status;)Lorg/springframework/boot/actuate/health/Health$Builder;
            pop
         8: .line 87
            return
        end local 3 // org.springframework.boot.actuate.health.Status status
        end local 2 // org.springframework.boot.availability.AvailabilityState state
        end local 1 // org.springframework.boot.actuate.health.Health$Builder builder
        end local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator;
            0    9     1  builder  Lorg/springframework/boot/actuate/health/Health$Builder;
            1    9     2    state  Lorg/springframework/boot/availability/AvailabilityState;
            2    9     3   status  Lorg/springframework/boot/actuate/health/Status;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      builder  

  protected org.springframework.boot.availability.AvailabilityState getState(org.springframework.boot.availability.ApplicationAvailability);
    descriptor: (Lorg/springframework/boot/availability/ApplicationAvailability;)Lorg/springframework/boot/availability/AvailabilityState;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
        start local 1 // org.springframework.boot.availability.ApplicationAvailability applicationAvailability
         0: .line 96
            aload 1 /* applicationAvailability */
            aload 0 /* this */
            getfield org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator.stateType:Ljava/lang/Class;
            invokeinterface org.springframework.boot.availability.ApplicationAvailability.getState:(Ljava/lang/Class;)Lorg/springframework/boot/availability/AvailabilityState;
            areturn
        end local 1 // org.springframework.boot.availability.ApplicationAvailability applicationAvailability
        end local 0 // org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    1     0                     this  Lorg/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator;
            0    1     1  applicationAvailability  Lorg/springframework/boot/availability/ApplicationAvailability;
    MethodParameters:
                         Name  Flags
      applicationAvailability  

  private static java.lang.String lambda$1(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 73
            new java.lang.StringBuilder
            dup
            ldc "StatusMappings does not include "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$2(org.springframework.boot.availability.AvailabilityState);
    descriptor: (Lorg/springframework/boot/availability/AvailabilityState;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 85
            new java.lang.StringBuilder
            dup
            ldc "No mapping provided for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "AvailabilityStateHealthIndicator.java"
NestMembers:
  org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator$StatusMappings
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract StatusMappings = org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator$StatusMappings of org.springframework.boot.actuate.availability.AvailabilityStateHealthIndicator
  public Builder = org.springframework.boot.actuate.health.Health$Builder of org.springframework.boot.actuate.health.Health