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

  public static final java.lang.String MBEAN_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.apache.cassandra.net:type=FailureDetector"

  private static final int SAMPLE_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1000

  protected static final long INITIAL_VALUE_NANOS;
    descriptor: J
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private static final int DEBUG_PERCENTAGE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 80

  private static final long DEFAULT_MAX_PAUSE;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5000000000

  private static final long MAX_LOCAL_PAUSE_IN_NANOS;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private long lastInterpret;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long lastPause;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  public static final org.apache.cassandra.gms.IFailureDetector instance;
    descriptor: Lorg/apache/cassandra/gms/IFailureDetector;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private final double PHI_FACTOR;
    descriptor: D
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.ConcurrentHashMap<java.net.InetAddress, org.apache.cassandra.gms.ArrivalWindow> arrivalSamples;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/net/InetAddress;Lorg/apache/cassandra/gms/ArrivalWindow;>;

  private final java.util.List<org.apache.cassandra.gms.IFailureDetectionEventListener> fdEvntListeners;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/apache/cassandra/gms/IFailureDetectionEventListener;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 47
            ldc Lorg/apache/cassandra/gms/FailureDetector;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
         1: .line 50
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic org.apache.cassandra.gms.FailureDetector.getInitialValue:()J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
            putstatic org.apache.cassandra.gms.FailureDetector.INITIAL_VALUE_NANOS:J
         2: .line 53
            invokestatic org.apache.cassandra.gms.FailureDetector.getMaxLocalPause:()J
            putstatic org.apache.cassandra.gms.FailureDetector.MAX_LOCAL_PAUSE_IN_NANOS:J
         3: .line 69
            new org.apache.cassandra.gms.FailureDetector
            dup
            invokespecial org.apache.cassandra.gms.FailureDetector.<init>:()V
            putstatic org.apache.cassandra.gms.FailureDetector.instance:Lorg/apache/cassandra/gms/IFailureDetector;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static long getMaxLocalPause();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 59
            ldc "cassandra.max_local_pause_in_ms"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnull 4
         1: .line 61
            ldc "cassandra.max_local_pause_in_ms"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Long.parseLong:(Ljava/lang/String;)J
            lstore 0 /* pause */
        start local 0 // long pause
         2: .line 62
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Overriding max local pause time to {}ms"
            lload 0 /* pause */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 63
            lload 0 /* pause */
            ldc 1000000
            lmul
            lreturn
        end local 0 // long pause
         4: .line 66
      StackMap locals:
      StackMap stack:
            ldc 5000000000
            lreturn
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            2    4     0  pause  J

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 80
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 54
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.Clock.instance:Lorg/apache/cassandra/utils/Clock;
            invokevirtual org.apache.cassandra.utils.Clock.nanoTime:()J
            putfield org.apache.cassandra.gms.FailureDetector.lastInterpret:J
         2: .line 55
            aload 0 /* this */
            lconst_0
            putfield org.apache.cassandra.gms.FailureDetector.lastPause:J
         3: .line 75
            aload 0 /* this */
            dconst_1
            ldc 10.0
            invokestatic java.lang.Math.log:(D)D
            ddiv
            putfield org.apache.cassandra.gms.FailureDetector.PHI_FACTOR:D
         4: .line 77
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
         5: .line 78
            aload 0 /* this */
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            putfield org.apache.cassandra.gms.FailureDetector.fdEvntListeners:Ljava/util/List;
         6: .line 83
            getstatic org.apache.cassandra.utils.MBeanWrapper.instance:Lorg/apache/cassandra/utils/MBeanWrapper;
            aload 0 /* this */
            ldc "org.apache.cassandra.net:type=FailureDetector"
            invokeinterface org.apache.cassandra.utils.MBeanWrapper.registerMBean:(Ljava/lang/Object;Ljava/lang/String;)V
         7: .line 84
            return
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/apache/cassandra/gms/FailureDetector;

  private static long getInitialValue();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 88
            ldc "cassandra.fd_initial_value_ms"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* newvalue */
        start local 0 // java.lang.String newvalue
         1: .line 89
            aload 0 /* newvalue */
            ifnonnull 3
         2: .line 91
            ldc 2000
            lreturn
         3: .line 95
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Overriding FD INITIAL_VALUE to {}ms"
            aload 0 /* newvalue */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 96
            aload 0 /* newvalue */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            i2l
            lreturn
        end local 0 // java.lang.String newvalue
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            1    5     0  newvalue  Ljava/lang/String;

  public java.lang.String getAllEndpointStates();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 102
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 103
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            getfield org.apache.cassandra.gms.Gossiper.endpointStateMap:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         3: .line 105
            aload 1 /* sb */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 106
            aload 0 /* this */
            aload 1 /* sb */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.EndpointState
            invokevirtual org.apache.cassandra.gms.FailureDetector.appendEndpointState:(Ljava/lang/StringBuilder;Lorg/apache/cassandra/gms/EndpointState;)V
        end local 2 // java.util.Map$Entry entry
         5: .line 103
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 108
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/apache/cassandra/gms/FailureDetector;
            1    7     1     sb  Ljava/lang/StringBuilder;
            3    5     2  entry  Ljava/util/Map$Entry<Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;>;

  public java.util.Map<java.lang.String, java.lang.String> getSimpleStates();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 113
            new java.util.HashMap
            dup
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            getfield org.apache.cassandra.gms.Gossiper.endpointStateMap:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.size:()I
            invokespecial java.util.HashMap.<init>:(I)V
            astore 1 /* nodesStatus */
        start local 1 // java.util.Map nodesStatus
         1: .line 114
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            getfield org.apache.cassandra.gms.Gossiper.endpointStateMap:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.util.Map top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         3: .line 116
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.EndpointState
            invokevirtual org.apache.cassandra.gms.EndpointState.isAlive:()Z
            ifeq 5
         4: .line 117
            aload 1 /* nodesStatus */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            invokevirtual java.net.InetAddress.toString:()Ljava/lang/String;
            ldc "UP"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
            goto 6
         5: .line 119
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.util.Map java.util.Map$Entry java.util.Iterator
      StackMap stack:
            aload 1 /* nodesStatus */
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            invokevirtual java.net.InetAddress.toString:()Ljava/lang/String;
            ldc "DOWN"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.util.Map$Entry entry
         6: .line 114
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.util.Map top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 121
            aload 1 /* nodesStatus */
            areturn
        end local 1 // java.util.Map nodesStatus
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/apache/cassandra/gms/FailureDetector;
            1    8     1  nodesStatus  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            3    6     2        entry  Ljava/util/Map$Entry<Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;>;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;

  public int getDownEndpointCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 126
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 127
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            getfield org.apache.cassandra.gms.Gossiper.endpointStateMap:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.apache.cassandra.gms.FailureDetector int top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         3: .line 129
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.EndpointState
            invokevirtual org.apache.cassandra.gms.EndpointState.isAlive:()Z
            ifne 5
         4: .line 130
            iinc 1 /* count */ 1
        end local 2 // java.util.Map$Entry entry
         5: .line 127
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 132
            iload 1 /* count */
            ireturn
        end local 1 // int count
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/apache/cassandra/gms/FailureDetector;
            1    7     1  count  I
            3    5     2  entry  Ljava/util/Map$Entry<Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;>;

  public int getUpEndpointCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 137
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 138
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            getfield org.apache.cassandra.gms.Gossiper.endpointStateMap:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.apache.cassandra.gms.FailureDetector int top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* entry */
        start local 2 // java.util.Map$Entry entry
         3: .line 140
            aload 2 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.EndpointState
            invokevirtual org.apache.cassandra.gms.EndpointState.isAlive:()Z
            ifeq 5
         4: .line 141
            iinc 1 /* count */ 1
        end local 2 // java.util.Map$Entry entry
         5: .line 138
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 143
            iload 1 /* count */
            ireturn
        end local 1 // int count
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lorg/apache/cassandra/gms/FailureDetector;
            1    7     1  count  I
            3    5     2  entry  Ljava/util/Map$Entry<Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;>;

  public javax.management.openmbean.TabularData getPhiValues();
    descriptor: ()Ljavax/management/openmbean/TabularData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=9, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 149
            new javax.management.openmbean.CompositeType
            dup
            ldc "Node"
            ldc "Node"
         1: .line 150
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "Endpoint"
            aastore
            dup
            iconst_1
            ldc "PHI"
            aastore
         2: .line 151
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "IP of the endpoint"
            aastore
            dup
            iconst_1
            ldc "PHI value"
            aastore
         3: .line 152
            iconst_2
            anewarray javax.management.openmbean.OpenType
            dup
            iconst_0
            getstatic javax.management.openmbean.SimpleType.STRING:Ljavax/management/openmbean/SimpleType;
            aastore
            dup
            iconst_1
            getstatic javax.management.openmbean.SimpleType.DOUBLE:Ljavax/management/openmbean/SimpleType;
            aastore
         4: .line 149
            invokespecial javax.management.openmbean.CompositeType.<init>:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljavax/management/openmbean/OpenType;)V
            astore 1 /* ct */
        start local 1 // javax.management.openmbean.CompositeType ct
         5: .line 153
            new javax.management.openmbean.TabularDataSupport
            dup
            new javax.management.openmbean.TabularType
            dup
            ldc "PhiList"
            ldc "PhiList"
            aload 1 /* ct */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "Endpoint"
            aastore
            invokespecial javax.management.openmbean.TabularType.<init>:(Ljava/lang/String;Ljava/lang/String;Ljavax/management/openmbean/CompositeType;[Ljava/lang/String;)V
            invokespecial javax.management.openmbean.TabularDataSupport.<init>:(Ljavax/management/openmbean/TabularType;)V
            astore 2 /* results */
        start local 2 // javax.management.openmbean.TabularDataSupport results
         6: .line 155
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 17
      StackMap locals: org.apache.cassandra.gms.FailureDetector javax.management.openmbean.CompositeType javax.management.openmbean.TabularDataSupport top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* entry */
        start local 3 // java.util.Map$Entry entry
         8: .line 157
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.ArrivalWindow
            astore 5 /* window */
        start local 5 // org.apache.cassandra.gms.ArrivalWindow window
         9: .line 158
            aload 5 /* window */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.mean:()D
            dconst_0
            dcmpl
            ifle 17
        10: .line 160
            aload 5 /* window */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.getLastReportedPhi:()D
            dstore 6 /* phi */
        start local 6 // double phi
        11: .line 161
            dload 6 /* phi */
            ldc 4.9E-324
            dcmpl
            ifeq 17
        12: .line 164
            new javax.management.openmbean.CompositeDataSupport
            dup
            aload 1 /* ct */
        13: .line 165
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "Endpoint"
            aastore
            dup
            iconst_1
            ldc "PHI"
            aastore
        14: .line 166
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            invokevirtual java.net.InetAddress.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            dload 6 /* phi */
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.PHI_FACTOR:D
            dmul
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
        15: .line 164
            invokespecial javax.management.openmbean.CompositeDataSupport.<init>:(Ljavax/management/openmbean/CompositeType;[Ljava/lang/String;[Ljava/lang/Object;)V
            astore 8 /* data */
        start local 8 // javax.management.openmbean.CompositeData data
        16: .line 167
            aload 2 /* results */
            aload 8 /* data */
            invokevirtual javax.management.openmbean.TabularDataSupport.put:(Ljavax/management/openmbean/CompositeData;)V
        end local 8 // javax.management.openmbean.CompositeData data
        end local 6 // double phi
        end local 5 // org.apache.cassandra.gms.ArrivalWindow window
        end local 3 // java.util.Map$Entry entry
        17: .line 155
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        18: .line 171
            aload 2 /* results */
            areturn
        end local 2 // javax.management.openmbean.TabularDataSupport results
        end local 1 // javax.management.openmbean.CompositeType ct
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     this  Lorg/apache/cassandra/gms/FailureDetector;
            5   19     1       ct  Ljavax/management/openmbean/CompositeType;
            6   19     2  results  Ljavax/management/openmbean/TabularDataSupport;
            8   17     3    entry  Ljava/util/Map$Entry<Ljava/net/InetAddress;Lorg/apache/cassandra/gms/ArrivalWindow;>;
            9   17     5   window  Lorg/apache/cassandra/gms/ArrivalWindow;
           11   17     6      phi  D
           16   17     8     data  Ljavax/management/openmbean/CompositeData;
    Exceptions:
      throws javax.management.openmbean.OpenDataException

  public java.lang.String getEndpointState(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.lang.String address
         0: .line 176
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         1: .line 177
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            aload 1 /* address */
            invokestatic java.net.InetAddress.getByName:(Ljava/lang/String;)Ljava/net/InetAddress;
            invokevirtual org.apache.cassandra.gms.Gossiper.getEndpointStateForEndpoint:(Ljava/net/InetAddress;)Lorg/apache/cassandra/gms/EndpointState;
            astore 3 /* endpointState */
        start local 3 // org.apache.cassandra.gms.EndpointState endpointState
         2: .line 178
            aload 0 /* this */
            aload 2 /* sb */
            aload 3 /* endpointState */
            invokevirtual org.apache.cassandra.gms.FailureDetector.appendEndpointState:(Ljava/lang/StringBuilder;Lorg/apache/cassandra/gms/EndpointState;)V
         3: .line 179
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // org.apache.cassandra.gms.EndpointState endpointState
        end local 2 // java.lang.StringBuilder sb
        end local 1 // java.lang.String address
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/apache/cassandra/gms/FailureDetector;
            0    4     1        address  Ljava/lang/String;
            1    4     2             sb  Ljava/lang/StringBuilder;
            2    4     3  endpointState  Lorg/apache/cassandra/gms/EndpointState;
    Exceptions:
      throws java.net.UnknownHostException
    MethodParameters:
         Name  Flags
      address  

  private void appendEndpointState(java.lang.StringBuilder, org.apache.cassandra.gms.EndpointState);
    descriptor: (Ljava/lang/StringBuilder;Lorg/apache/cassandra/gms/EndpointState;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.lang.StringBuilder sb
        start local 2 // org.apache.cassandra.gms.EndpointState endpointState
         0: .line 184
            aload 1 /* sb */
            ldc "  generation:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* endpointState */
            invokevirtual org.apache.cassandra.gms.EndpointState.getHeartBeatState:()Lorg/apache/cassandra/gms/HeartBeatState;
            invokevirtual org.apache.cassandra.gms.HeartBeatState.getGeneration:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         1: .line 185
            aload 1 /* sb */
            ldc "  heartbeat:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* endpointState */
            invokevirtual org.apache.cassandra.gms.EndpointState.getHeartBeatState:()Lorg/apache/cassandra/gms/HeartBeatState;
            invokevirtual org.apache.cassandra.gms.HeartBeatState.getHeartBeatVersion:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 186
            aload 2 /* endpointState */
            invokevirtual org.apache.cassandra.gms.EndpointState.states:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.lang.StringBuilder org.apache.cassandra.gms.EndpointState top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* state */
        start local 3 // java.util.Map$Entry state
         4: .line 188
            aload 3 /* state */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            getstatic org.apache.cassandra.gms.ApplicationState.TOKENS:Lorg/apache/cassandra/gms/ApplicationState;
            if_acmpne 6
         5: .line 189
            goto 7
         6: .line 190
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.lang.StringBuilder org.apache.cassandra.gms.EndpointState java.util.Map$Entry java.util.Iterator
      StackMap stack:
            aload 1 /* sb */
            ldc "  "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* state */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* state */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.VersionedValue
            getfield org.apache.cassandra.gms.VersionedValue.version:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* state */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.VersionedValue
            getfield org.apache.cassandra.gms.VersionedValue.value:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // java.util.Map$Entry state
         7: .line 186
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.lang.StringBuilder org.apache.cassandra.gms.EndpointState top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 192
            aload 2 /* endpointState */
            getstatic org.apache.cassandra.gms.ApplicationState.TOKENS:Lorg/apache/cassandra/gms/ApplicationState;
            invokevirtual org.apache.cassandra.gms.EndpointState.getApplicationState:(Lorg/apache/cassandra/gms/ApplicationState;)Lorg/apache/cassandra/gms/VersionedValue;
            astore 3 /* tokens */
        start local 3 // org.apache.cassandra.gms.VersionedValue tokens
         9: .line 193
            aload 3 /* tokens */
            ifnull 12
        10: .line 195
            aload 1 /* sb */
            ldc "  TOKENS:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* tokens */
            getfield org.apache.cassandra.gms.VersionedValue.version:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ":<hidden>\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 196
            goto 13
        12: .line 199
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.lang.StringBuilder org.apache.cassandra.gms.EndpointState org.apache.cassandra.gms.VersionedValue
      StackMap stack:
            aload 1 /* sb */
            ldc "  TOKENS: not present\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 201
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.apache.cassandra.gms.VersionedValue tokens
        end local 2 // org.apache.cassandra.gms.EndpointState endpointState
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lorg/apache/cassandra/gms/FailureDetector;
            0   14     1             sb  Ljava/lang/StringBuilder;
            0   14     2  endpointState  Lorg/apache/cassandra/gms/EndpointState;
            4    7     3          state  Ljava/util/Map$Entry<Lorg/apache/cassandra/gms/ApplicationState;Lorg/apache/cassandra/gms/VersionedValue;>;
            9   14     3         tokens  Lorg/apache/cassandra/gms/VersionedValue;
    MethodParameters:
               Name  Flags
      sb             
      endpointState  

  public void dumpInterArrivalTimes();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 208
            ldc "failuredetector-"
            ldc ".dat"
            invokestatic org.apache.cassandra.io.util.FileUtils.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 1 /* file */
        start local 1 // java.io.File file
         1: .line 210
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: new java.io.BufferedOutputStream
            dup
            new java.io.FileOutputStream
            dup
            aload 1 /* file */
            iconst_1
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;Z)V
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 4 /* os */
        start local 4 // java.io.OutputStream os
         3: .line 212
            aload 4 /* os */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.gms.FailureDetector.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            invokevirtual java.io.OutputStream.write:([B)V
         4: .line 213
            aload 4 /* os */
            ifnull 12
            aload 4 /* os */
            invokevirtual java.io.OutputStream.close:()V
            goto 12
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.io.File java.lang.Throwable java.lang.Throwable java.io.OutputStream
      StackMap stack: java.lang.Throwable
         5: astore 2
            aload 4 /* os */
            ifnull 6
            aload 4 /* os */
            invokevirtual java.io.OutputStream.close:()V
        end local 4 // java.io.OutputStream os
      StackMap locals:
      StackMap stack:
         6: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 3
            aload 2
            ifnonnull 8
            aload 3
            astore 2
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 2
            aload 3
            if_acmpeq 9
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
         9: aload 2
            athrow
        10: .line 214
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.io.File
      StackMap stack: java.io.IOException
            astore 2 /* e */
        start local 2 // java.io.IOException e
        11: .line 216
            new org.apache.cassandra.io.FSWriteError
            dup
            aload 2 /* e */
            aload 1 /* file */
            invokespecial org.apache.cassandra.io.FSWriteError.<init>:(Ljava/lang/Throwable;Ljava/io/File;)V
            athrow
        end local 2 // java.io.IOException e
        12: .line 218
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.File file
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/apache/cassandra/gms/FailureDetector;
            1   13     1  file  Ljava/io/File;
            3    6     4    os  Ljava/io/OutputStream;
           11   12     2     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     4       5  any
           2     7       7  any
           1    10      10  Class java.io.IOException

  public void setPhiConvictThreshold(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // double phi
         0: .line 222
            dload 1 /* phi */
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.setPhiConvictThreshold:(D)V
         1: .line 223
            return
        end local 1 // double phi
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/gms/FailureDetector;
            0    2     1   phi  D
    MethodParameters:
      Name  Flags
      phi   

  public double getPhiConvictThreshold();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 227
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getPhiConvictThreshold:()D
            dreturn
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/gms/FailureDetector;

  public boolean isAlive(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.net.InetAddress ep
         0: .line 232
            aload 1 /* ep */
            invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 233
            iconst_1
            ireturn
         2: .line 235
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            aload 1 /* ep */
            invokevirtual org.apache.cassandra.gms.Gossiper.getEndpointStateForEndpoint:(Ljava/net/InetAddress;)Lorg/apache/cassandra/gms/EndpointState;
            astore 2 /* epState */
        start local 2 // org.apache.cassandra.gms.EndpointState epState
         3: .line 239
            aload 2 /* epState */
            ifnonnull 5
         4: .line 240
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Unknown endpoint: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* ep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            new java.lang.IllegalArgumentException
            dup
            ldc ""
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         5: .line 241
      StackMap locals: org.apache.cassandra.gms.EndpointState
      StackMap stack:
            aload 2 /* epState */
            ifnull 6
            aload 2 /* epState */
            invokevirtual org.apache.cassandra.gms.EndpointState.isAlive:()Z
            ifeq 6
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         6: iconst_0
            ireturn
        end local 2 // org.apache.cassandra.gms.EndpointState epState
        end local 1 // java.net.InetAddress ep
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/apache/cassandra/gms/FailureDetector;
            0    7     1       ep  Ljava/net/InetAddress;
            3    7     2  epState  Lorg/apache/cassandra/gms/EndpointState;
    MethodParameters:
      Name  Flags
      ep    

  public void report(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.net.InetAddress ep
         0: .line 246
            getstatic org.apache.cassandra.utils.Clock.instance:Lorg/apache/cassandra/utils/Clock;
            invokevirtual org.apache.cassandra.utils.Clock.nanoTime:()J
            lstore 2 /* now */
        start local 2 // long now
         1: .line 247
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* ep */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.ArrivalWindow
            astore 4 /* heartbeatWindow */
        start local 4 // org.apache.cassandra.gms.ArrivalWindow heartbeatWindow
         2: .line 248
            aload 4 /* heartbeatWindow */
            ifnonnull 9
         3: .line 251
            new org.apache.cassandra.gms.ArrivalWindow
            dup
            sipush 1000
            invokespecial org.apache.cassandra.gms.ArrivalWindow.<init>:(I)V
            astore 4 /* heartbeatWindow */
         4: .line 252
            aload 4 /* heartbeatWindow */
            lload 2 /* now */
            aload 1 /* ep */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.add:(JLjava/net/InetAddress;)V
         5: .line 253
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* ep */
            aload 4 /* heartbeatWindow */
            invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.ArrivalWindow
            astore 4 /* heartbeatWindow */
         6: .line 254
            aload 4 /* heartbeatWindow */
            ifnull 10
         7: .line 255
            aload 4 /* heartbeatWindow */
            lload 2 /* now */
            aload 1 /* ep */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.add:(JLjava/net/InetAddress;)V
         8: .line 256
            goto 10
         9: .line 259
      StackMap locals: long org.apache.cassandra.gms.ArrivalWindow
      StackMap stack:
            aload 4 /* heartbeatWindow */
            lload 2 /* now */
            aload 1 /* ep */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.add:(JLjava/net/InetAddress;)V
        10: .line 262
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 12
            aload 4 /* heartbeatWindow */
            ifnull 12
        11: .line 263
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Average for {} is {}"
            aload 1 /* ep */
            aload 4 /* heartbeatWindow */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.mean:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 264
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.apache.cassandra.gms.ArrivalWindow heartbeatWindow
        end local 2 // long now
        end local 1 // java.net.InetAddress ep
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lorg/apache/cassandra/gms/FailureDetector;
            0   13     1               ep  Ljava/net/InetAddress;
            1   13     2              now  J
            2   13     4  heartbeatWindow  Lorg/apache/cassandra/gms/ArrivalWindow;
    MethodParameters:
      Name  Flags
      ep    

  public void interpret(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=11, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.net.InetAddress ep
         0: .line 268
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* ep */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.ArrivalWindow
            astore 2 /* hbWnd */
        start local 2 // org.apache.cassandra.gms.ArrivalWindow hbWnd
         1: .line 269
            aload 2 /* hbWnd */
            ifnonnull 3
         2: .line 271
            return
         3: .line 273
      StackMap locals: org.apache.cassandra.gms.ArrivalWindow
      StackMap stack:
            getstatic org.apache.cassandra.utils.Clock.instance:Lorg/apache/cassandra/utils/Clock;
            invokevirtual org.apache.cassandra.utils.Clock.nanoTime:()J
            lstore 3 /* now */
        start local 3 // long now
         4: .line 274
            lload 3 /* now */
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.lastInterpret:J
            lsub
            lstore 5 /* diff */
        start local 5 // long diff
         5: .line 275
            aload 0 /* this */
            lload 3 /* now */
            putfield org.apache.cassandra.gms.FailureDetector.lastInterpret:J
         6: .line 276
            lload 5 /* diff */
            getstatic org.apache.cassandra.gms.FailureDetector.MAX_LOCAL_PAUSE_IN_NANOS:J
            lcmp
            ifle 10
         7: .line 278
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Not marking nodes down due to local pause of {} > {}"
            lload 5 /* diff */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            getstatic org.apache.cassandra.gms.FailureDetector.MAX_LOCAL_PAUSE_IN_NANOS:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 279
            aload 0 /* this */
            lload 3 /* now */
            putfield org.apache.cassandra.gms.FailureDetector.lastPause:J
         9: .line 280
            return
        10: .line 282
      StackMap locals: long long
      StackMap stack:
            getstatic org.apache.cassandra.utils.Clock.instance:Lorg/apache/cassandra/utils/Clock;
            invokevirtual org.apache.cassandra.utils.Clock.nanoTime:()J
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.lastPause:J
            lsub
            getstatic org.apache.cassandra.gms.FailureDetector.MAX_LOCAL_PAUSE_IN_NANOS:J
            lcmp
            ifge 13
        11: .line 284
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Still not marking nodes down due to local pause"
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        12: .line 285
            return
        13: .line 287
      StackMap locals:
      StackMap stack:
            aload 2 /* hbWnd */
            lload 3 /* now */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.phi:(J)D
            dstore 7 /* phi */
        start local 7 // double phi
        14: .line 288
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 16
        15: .line 289
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "PHI for {} : {}"
            aload 1 /* ep */
            dload 7 /* phi */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 291
      StackMap locals: double
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.PHI_FACTOR:D
            dload 7 /* phi */
            dmul
            aload 0 /* this */
            invokevirtual org.apache.cassandra.gms.FailureDetector.getPhiConvictThreshold:()D
            dcmpl
            ifle 24
        17: .line 293
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 19
        18: .line 294
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Node {} phi {} > {}; intervals: {} mean: {}"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* ep */
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.PHI_FACTOR:D
            dload 7 /* phi */
            dmul
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            invokevirtual org.apache.cassandra.gms.FailureDetector.getPhiConvictThreshold:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
            dup
            iconst_3
            aload 2 /* hbWnd */
            aastore
            dup
            iconst_4
            aload 2 /* hbWnd */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.mean:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;[Ljava/lang/Object;)V
        19: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.fdEvntListeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 22
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.net.InetAddress org.apache.cassandra.gms.ArrivalWindow long long double top java.util.Iterator
      StackMap stack:
        20: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.IFailureDetectionEventListener
            astore 9 /* listener */
        start local 9 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
        21: .line 297
            aload 9 /* listener */
            aload 1 /* ep */
            dload 7 /* phi */
            invokeinterface org.apache.cassandra.gms.IFailureDetectionEventListener.convict:(Ljava/net/InetAddress;D)V
        end local 9 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
        22: .line 295
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        23: .line 299
            goto 30
        24: .line 300
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.net.InetAddress org.apache.cassandra.gms.ArrivalWindow long long double
      StackMap stack:
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 27
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.PHI_FACTOR:D
            dload 7 /* phi */
            dmul
            ldc 80.0
            dmul
            ldc 100.0
            ddiv
            aload 0 /* this */
            invokevirtual org.apache.cassandra.gms.FailureDetector.getPhiConvictThreshold:()D
            dcmpl
            ifle 27
        25: .line 302
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "PHI for {} : {}"
            aload 1 /* ep */
            dload 7 /* phi */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        26: .line 303
            goto 30
        27: .line 304
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 30
        28: .line 306
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "PHI for {} : {}"
            aload 1 /* ep */
            dload 7 /* phi */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        29: .line 307
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "mean for {} : {}"
            aload 1 /* ep */
            aload 2 /* hbWnd */
            invokevirtual org.apache.cassandra.gms.ArrivalWindow.mean:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        30: .line 309
      StackMap locals:
      StackMap stack:
            return
        end local 7 // double phi
        end local 5 // long diff
        end local 3 // long now
        end local 2 // org.apache.cassandra.gms.ArrivalWindow hbWnd
        end local 1 // java.net.InetAddress ep
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   31     0      this  Lorg/apache/cassandra/gms/FailureDetector;
            0   31     1        ep  Ljava/net/InetAddress;
            1   31     2     hbWnd  Lorg/apache/cassandra/gms/ArrivalWindow;
            4   31     3       now  J
            5   31     5      diff  J
           14   31     7       phi  D
           21   22     9  listener  Lorg/apache/cassandra/gms/IFailureDetectionEventListener;
    MethodParameters:
      Name  Flags
      ep    

  public void forceConviction(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.net.InetAddress ep
         0: .line 313
            getstatic org.apache.cassandra.gms.FailureDetector.logger:Lorg/slf4j/Logger;
            ldc "Forcing conviction of {}"
            aload 1 /* ep */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 314
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.fdEvntListeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.net.InetAddress top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.IFailureDetectionEventListener
            astore 2 /* listener */
        start local 2 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
         3: .line 316
            aload 2 /* listener */
            aload 1 /* ep */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.gms.FailureDetector.getPhiConvictThreshold:()D
            invokeinterface org.apache.cassandra.gms.IFailureDetectionEventListener.convict:(Ljava/net/InetAddress;D)V
        end local 2 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
         4: .line 314
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 318
            return
        end local 1 // java.net.InetAddress ep
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/apache/cassandra/gms/FailureDetector;
            0    6     1        ep  Ljava/net/InetAddress;
            3    4     2  listener  Lorg/apache/cassandra/gms/IFailureDetectionEventListener;
    MethodParameters:
      Name  Flags
      ep    

  public void remove(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // java.net.InetAddress ep
         0: .line 322
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* ep */
            invokevirtual java.util.concurrent.ConcurrentHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 323
            return
        end local 1 // java.net.InetAddress ep
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/gms/FailureDetector;
            0    2     1    ep  Ljava/net/InetAddress;
    MethodParameters:
      Name  Flags
      ep    

  public void registerFailureDetectionEventListener(org.apache.cassandra.gms.IFailureDetectionEventListener);
    descriptor: (Lorg/apache/cassandra/gms/IFailureDetectionEventListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
         0: .line 327
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.fdEvntListeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 328
            return
        end local 1 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/cassandra/gms/FailureDetector;
            0    2     1  listener  Lorg/apache/cassandra/gms/IFailureDetectionEventListener;
    MethodParameters:
          Name  Flags
      listener  

  public void unregisterFailureDetectionEventListener(org.apache.cassandra.gms.IFailureDetectionEventListener);
    descriptor: (Lorg/apache/cassandra/gms/IFailureDetectionEventListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.gms.FailureDetector this
        start local 1 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
         0: .line 332
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.fdEvntListeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 333
            return
        end local 1 // org.apache.cassandra.gms.IFailureDetectionEventListener listener
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/cassandra/gms/FailureDetector;
            0    2     1  listener  Lorg/apache/cassandra/gms/IFailureDetectionEventListener;
    MethodParameters:
          Name  Flags
      listener  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // org.apache.cassandra.gms.FailureDetector this
         0: .line 337
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 338
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.keySet:()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
            astore 2 /* eps */
        start local 2 // java.util.Set eps
         2: .line 340
            aload 1 /* sb */
            ldc "-----------------------------------------------------------------------"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 341
            aload 2 /* eps */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: org.apache.cassandra.gms.FailureDetector java.lang.StringBuilder java.util.Set top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 3 /* ep */
        start local 3 // java.net.InetAddress ep
         5: .line 343
            aload 0 /* this */
            getfield org.apache.cassandra.gms.FailureDetector.arrivalSamples:Ljava/util/concurrent/ConcurrentHashMap;
            aload 3 /* ep */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.gms.ArrivalWindow
            astore 5 /* hWnd */
        start local 5 // org.apache.cassandra.gms.ArrivalWindow hWnd
         6: .line 344
            aload 1 /* sb */
            aload 3 /* ep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " : "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 345
            aload 1 /* sb */
            aload 5 /* hWnd */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         8: .line 346
            aload 1 /* sb */
            ldc "line.separator"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // org.apache.cassandra.gms.ArrivalWindow hWnd
        end local 3 // java.net.InetAddress ep
         9: .line 341
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        10: .line 348
            aload 1 /* sb */
            ldc "-----------------------------------------------------------------------"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 349
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.util.Set eps
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.apache.cassandra.gms.FailureDetector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lorg/apache/cassandra/gms/FailureDetector;
            1   12     1    sb  Ljava/lang/StringBuilder;
            2   12     2   eps  Ljava/util/Set<Ljava/net/InetAddress;>;
            5    9     3    ep  Ljava/net/InetAddress;
            6    9     5  hWnd  Lorg/apache/cassandra/gms/ArrivalWindow;
}
SourceFile: "FailureDetector.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public KeySetView = java.util.concurrent.ConcurrentHashMap$KeySetView of java.util.concurrent.ConcurrentHashMap