public final class org.apache.cassandra.utils.JVMStabilityInspector
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.cassandra.utils.JVMStabilityInspector
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static org.apache.cassandra.utils.JVMStabilityInspector$Killer killer;
    descriptor: Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.Object lock;
    descriptor: Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static boolean printingHeapHistogram;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static volatile int[] $SWITCH_TABLE$org$apache$cassandra$config$Config$UserFunctionTimeoutPolicy;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 42
            ldc Lorg/apache/cassandra/utils/JVMStabilityInspector;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.utils.JVMStabilityInspector.logger:Lorg/slf4j/Logger;
         1: .line 43
            new org.apache.cassandra.utils.JVMStabilityInspector$Killer
            dup
            invokespecial org.apache.cassandra.utils.JVMStabilityInspector$Killer.<init>:()V
            putstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
         2: .line 45
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic org.apache.cassandra.utils.JVMStabilityInspector.lock:Ljava/lang/Object;
         3: .line 46
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.JVMStabilityInspector this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.utils.JVMStabilityInspector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/JVMStabilityInspector;

  public static void inspectThrowable(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 58
            iconst_0
            istore 1 /* isUnstable */
        start local 1 // boolean isUnstable
         1: .line 59
            aload 0 /* t */
            instanceof java.lang.OutOfMemoryError
            ifeq 16
         2: .line 61
            ldc "cassandra.printHeapHistogramOnOutOfMemoryError"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            ifeq 13
         3: .line 65
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 67
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.printingHeapHistogram:Z
            ifeq 7
         5: .line 68
            aload 2
            monitorexit
         6: return
         7: .line 69
      StackMap locals: int java.lang.Object
      StackMap stack:
            iconst_1
            putstatic org.apache.cassandra.utils.JVMStabilityInspector.printingHeapHistogram:Z
         8: .line 65
            aload 2
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 2
            monitorexit
        11: athrow
        12: .line 71
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.cassandra.utils.HeapUtils.logHeapHistogram:()V
        13: .line 74
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.logger:Lorg/slf4j/Logger;
            ldc "OutOfMemory error letting the JVM handle the error:"
            aload 0 /* t */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        14: .line 76
            getstatic org.apache.cassandra.service.StorageService.instance:Lorg/apache/cassandra/service/StorageService;
            invokevirtual org.apache.cassandra.service.StorageService.removeShutdownHook:()V
        15: .line 79
            aload 0 /* t */
            checkcast java.lang.OutOfMemoryError
            athrow
        16: .line 82
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getDiskFailurePolicy:()Lorg/apache/cassandra/config/Config$DiskFailurePolicy;
            getstatic org.apache.cassandra.config.Config$DiskFailurePolicy.die:Lorg/apache/cassandra/config/Config$DiskFailurePolicy;
            if_acmpne 19
        17: .line 83
            aload 0 /* t */
            instanceof org.apache.cassandra.io.FSError
            ifne 18
            aload 0 /* t */
            instanceof org.apache.cassandra.io.sstable.CorruptSSTableException
            ifeq 19
        18: .line 84
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 1 /* isUnstable */
        19: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* t */
            instanceof java.io.FileNotFoundException
            ifne 20
            aload 0 /* t */
            instanceof java.net.SocketException
            ifeq 22
        20: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            ldc "Too many open files"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 22
        21: .line 89
            iconst_1
            istore 1 /* isUnstable */
        22: .line 91
      StackMap locals:
      StackMap stack:
            iload 1 /* isUnstable */
            ifeq 24
        23: .line 92
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            aload 0 /* t */
            invokevirtual org.apache.cassandra.utils.JVMStabilityInspector$Killer.killCurrentJVM:(Ljava/lang/Throwable;)V
        24: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            ifnull 26
        25: .line 95
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
        26: .line 96
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean isUnstable
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0           t  Ljava/lang/Throwable;
            1   27     1  isUnstable  Z
      Exception table:
        from    to  target  type
           4     6      10  any
           7     9      10  any
          10    11      10  any
    MethodParameters:
      Name  Flags
      t     

  public static void inspectCommitLogThrowable(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 100
            getstatic org.apache.cassandra.service.StorageService.instance:Lorg/apache/cassandra/service/StorageService;
            invokevirtual org.apache.cassandra.service.StorageService.isDaemonSetupCompleted:()Z
            ifne 4
         1: .line 102
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.logger:Lorg/slf4j/Logger;
            ldc "Exiting due to error while processing commit log during initialization."
            aload 0 /* t */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         2: .line 103
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            aload 0 /* t */
            iconst_1
            invokevirtual org.apache.cassandra.utils.JVMStabilityInspector$Killer.killCurrentJVM:(Ljava/lang/Throwable;Z)V
         3: .line 104
            goto 7
         4: .line 105
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getCommitFailurePolicy:()Lorg/apache/cassandra/config/Config$CommitFailurePolicy;
            getstatic org.apache.cassandra.config.Config$CommitFailurePolicy.die:Lorg/apache/cassandra/config/Config$CommitFailurePolicy;
            if_acmpne 6
         5: .line 106
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            aload 0 /* t */
            invokevirtual org.apache.cassandra.utils.JVMStabilityInspector$Killer.killCurrentJVM:(Ljava/lang/Throwable;)V
            goto 7
         6: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* t */
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
         7: .line 109
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  public static void killCurrentJVM(java.lang.Throwable, boolean);
    descriptor: (Ljava/lang/Throwable;Z)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.Throwable t
        start local 1 // boolean quiet
         0: .line 113
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            aload 0 /* t */
            iload 1 /* quiet */
            invokevirtual org.apache.cassandra.utils.JVMStabilityInspector$Killer.killCurrentJVM:(Ljava/lang/Throwable;Z)V
         1: .line 114
            return
        end local 1 // boolean quiet
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0      t  Ljava/lang/Throwable;
            0    2     1  quiet  Z
    MethodParameters:
       Name  Flags
      t      
      quiet  

  public static void userFunctionTimeout(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 118
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.$SWITCH_TABLE$org$apache$cassandra$config$Config$UserFunctionTimeoutPolicy:()[I
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getUserFunctionTimeoutPolicy:()Lorg/apache/cassandra/config/Config$UserFunctionTimeoutPolicy;
            invokevirtual org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 5
                    2: 1
                    3: 3
              default: 6
          }
         1: .line 122
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.concurrent.ScheduledExecutors.nonPeriodicTasks:Lorg/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor;
            aload 0 /* t */
            invokedynamic run(Ljava/lang/Throwable;)Ljava/lang/Runnable;
              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:
                  ()V
                  org/apache/cassandra/utils/JVMStabilityInspector.lambda$0(Ljava/lang/Throwable;)V (6)
                  ()V
            ldc 250
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            pop
         2: .line 123
            goto 6
         3: .line 125
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            aload 0 /* t */
            invokevirtual org.apache.cassandra.utils.JVMStabilityInspector$Killer.killCurrentJVM:(Ljava/lang/Throwable;)V
         4: .line 126
            goto 6
         5: .line 128
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.logger:Lorg/slf4j/Logger;
            aload 0 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;)V
         6: .line 131
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  public static org.apache.cassandra.utils.JVMStabilityInspector$Killer replaceKiller(org.apache.cassandra.utils.JVMStabilityInspector$Killer);
    descriptor: (Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;)Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.cassandra.utils.JVMStabilityInspector$Killer newKiller
         0: .line 136
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            astore 1 /* oldKiller */
        start local 1 // org.apache.cassandra.utils.JVMStabilityInspector$Killer oldKiller
         1: .line 137
            aload 0 /* newKiller */
            putstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
         2: .line 138
            aload 1 /* oldKiller */
            areturn
        end local 1 // org.apache.cassandra.utils.JVMStabilityInspector$Killer oldKiller
        end local 0 // org.apache.cassandra.utils.JVMStabilityInspector$Killer newKiller
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0  newKiller  Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            1    3     1  oldKiller  Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
           Name  Flags
      newKiller  

  static int[] $SWITCH_TABLE$org$apache$cassandra$config$Config$UserFunctionTimeoutPolicy();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 40
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.$SWITCH_TABLE$org$apache$cassandra$config$Config$UserFunctionTimeoutPolicy:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.values:()[Lorg/apache/cassandra/config/Config$UserFunctionTimeoutPolicy;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.die:Lorg/apache/cassandra/config/Config$UserFunctionTimeoutPolicy;
            invokevirtual org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.die_immediate:Lorg/apache/cassandra/config/Config$UserFunctionTimeoutPolicy;
            invokevirtual org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.ordinal:()I
            iconst_3
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.ignore:Lorg/apache/cassandra/config/Config$UserFunctionTimeoutPolicy;
            invokevirtual org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy.ordinal:()I
            iconst_1
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            dup
            putstatic org.apache.cassandra.utils.JVMStabilityInspector.$SWITCH_TABLE$org$apache$cassandra$config$Config$UserFunctionTimeoutPolicy:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError

  private static void lambda$0(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
         0: .line 122
            getstatic org.apache.cassandra.utils.JVMStabilityInspector.killer:Lorg/apache/cassandra/utils/JVMStabilityInspector$Killer;
            aload 0
            invokevirtual org.apache.cassandra.utils.JVMStabilityInspector$Killer.killCurrentJVM:(Ljava/lang/Throwable;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "JVMStabilityInspector.java"
NestMembers:
  org.apache.cassandra.utils.JVMStabilityInspector$Killer
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final CommitFailurePolicy = org.apache.cassandra.config.Config$CommitFailurePolicy of org.apache.cassandra.config.Config
  public final DiskFailurePolicy = org.apache.cassandra.config.Config$DiskFailurePolicy of org.apache.cassandra.config.Config
  public final UserFunctionTimeoutPolicy = org.apache.cassandra.config.Config$UserFunctionTimeoutPolicy of org.apache.cassandra.config.Config
  public Killer = org.apache.cassandra.utils.JVMStabilityInspector$Killer of org.apache.cassandra.utils.JVMStabilityInspector