public class org.apache.cassandra.locator.ReconnectableSnitchHelper implements org.apache.cassandra.gms.IEndpointStateChangeSubscriber
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.locator.ReconnectableSnitchHelper
  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 final org.apache.cassandra.locator.IEndpointSnitch snitch;
    descriptor: Lorg/apache/cassandra/locator/IEndpointSnitch;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String localDc;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean preferLocal;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 36
            ldc Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.locator.ReconnectableSnitchHelper.logger:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.locator.IEndpointSnitch, java.lang.String, boolean);
    descriptor: (Lorg/apache/cassandra/locator/IEndpointSnitch;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // org.apache.cassandra.locator.IEndpointSnitch snitch
        start local 2 // java.lang.String localDc
        start local 3 // boolean preferLocal
         0: .line 41
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            aload 1 /* snitch */
            putfield org.apache.cassandra.locator.ReconnectableSnitchHelper.snitch:Lorg/apache/cassandra/locator/IEndpointSnitch;
         2: .line 44
            aload 0 /* this */
            aload 2 /* localDc */
            putfield org.apache.cassandra.locator.ReconnectableSnitchHelper.localDc:Ljava/lang/String;
         3: .line 45
            aload 0 /* this */
            iload 3 /* preferLocal */
            putfield org.apache.cassandra.locator.ReconnectableSnitchHelper.preferLocal:Z
         4: .line 46
            return
        end local 3 // boolean preferLocal
        end local 2 // java.lang.String localDc
        end local 1 // org.apache.cassandra.locator.IEndpointSnitch snitch
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    5     1       snitch  Lorg/apache/cassandra/locator/IEndpointSnitch;
            0    5     2      localDc  Ljava/lang/String;
            0    5     3  preferLocal  Z
    MethodParameters:
             Name  Flags
      snitch       
      localDc      
      preferLocal  

  private void reconnect(java.net.InetAddress, org.apache.cassandra.gms.VersionedValue);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/VersionedValue;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress publicAddress
        start local 2 // org.apache.cassandra.gms.VersionedValue localAddressValue
         0: .line 52
            aload 0 /* this */
            aload 1 /* publicAddress */
            aload 2 /* localAddressValue */
            getfield org.apache.cassandra.gms.VersionedValue.value:Ljava/lang/String;
            invokestatic java.net.InetAddress.getByName:(Ljava/lang/String;)Ljava/net/InetAddress;
            invokevirtual org.apache.cassandra.locator.ReconnectableSnitchHelper.reconnect:(Ljava/net/InetAddress;Ljava/net/InetAddress;)V
         1: .line 53
            goto 4
         2: .line 54
      StackMap locals:
      StackMap stack: java.net.UnknownHostException
            astore 3 /* e */
        start local 3 // java.net.UnknownHostException e
         3: .line 56
            getstatic org.apache.cassandra.locator.ReconnectableSnitchHelper.logger:Lorg/slf4j/Logger;
            ldc "Error in getting the IP address resolved: "
            aload 3 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 3 // java.net.UnknownHostException e
         4: .line 58
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.gms.VersionedValue localAddressValue
        end local 1 // java.net.InetAddress publicAddress
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    5     1      publicAddress  Ljava/net/InetAddress;
            0    5     2  localAddressValue  Lorg/apache/cassandra/gms/VersionedValue;
            3    4     3                  e  Ljava/net/UnknownHostException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.net.UnknownHostException
    MethodParameters:
                   Name  Flags
      publicAddress      
      localAddressValue  

  private void reconnect(java.net.InetAddress, java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;Ljava/net/InetAddress;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress publicAddress
        start local 2 // java.net.InetAddress localAddress
         0: .line 62
            aload 0 /* this */
            getfield org.apache.cassandra.locator.ReconnectableSnitchHelper.snitch:Lorg/apache/cassandra/locator/IEndpointSnitch;
            aload 1 /* publicAddress */
            invokeinterface org.apache.cassandra.locator.IEndpointSnitch.getDatacenter:(Ljava/net/InetAddress;)Ljava/lang/String;
            aload 0 /* this */
            getfield org.apache.cassandra.locator.ReconnectableSnitchHelper.localDc:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         1: .line 63
            invokestatic org.apache.cassandra.net.MessagingService.instance:()Lorg/apache/cassandra/net/MessagingService;
            aload 1 /* publicAddress */
            invokevirtual org.apache.cassandra.net.MessagingService.getConnectionPool:(Ljava/net/InetAddress;)Lorg/apache/cassandra/net/OutboundTcpConnectionPool;
            invokevirtual org.apache.cassandra.net.OutboundTcpConnectionPool.endPoint:()Ljava/net/InetAddress;
            aload 2 /* localAddress */
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifne 4
         2: .line 65
            invokestatic org.apache.cassandra.net.MessagingService.instance:()Lorg/apache/cassandra/net/MessagingService;
            aload 1 /* publicAddress */
            invokevirtual org.apache.cassandra.net.MessagingService.getConnectionPool:(Ljava/net/InetAddress;)Lorg/apache/cassandra/net/OutboundTcpConnectionPool;
            aload 2 /* localAddress */
            invokevirtual org.apache.cassandra.net.OutboundTcpConnectionPool.reset:(Ljava/net/InetAddress;)V
         3: .line 66
            getstatic org.apache.cassandra.locator.ReconnectableSnitchHelper.logger:Lorg/slf4j/Logger;
            ldc "Initiated reconnect to an Internal IP {} for the {}"
            aload 2 /* localAddress */
            aload 1 /* publicAddress */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 68
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.net.InetAddress localAddress
        end local 1 // java.net.InetAddress publicAddress
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    5     1  publicAddress  Ljava/net/InetAddress;
            0    5     2   localAddress  Ljava/net/InetAddress;
    MethodParameters:
               Name  Flags
      publicAddress  
      localAddress   

  public void beforeChange(java.net.InetAddress, org.apache.cassandra.gms.EndpointState, org.apache.cassandra.gms.ApplicationState, org.apache.cassandra.gms.VersionedValue);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;Lorg/apache/cassandra/gms/ApplicationState;Lorg/apache/cassandra/gms/VersionedValue;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=5, args_size=5
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
        start local 2 // org.apache.cassandra.gms.EndpointState currentState
        start local 3 // org.apache.cassandra.gms.ApplicationState newStateKey
        start local 4 // org.apache.cassandra.gms.VersionedValue newValue
         0: .line 73
            return
        end local 4 // org.apache.cassandra.gms.VersionedValue newValue
        end local 3 // org.apache.cassandra.gms.ApplicationState newStateKey
        end local 2 // org.apache.cassandra.gms.EndpointState currentState
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    1     1      endpoint  Ljava/net/InetAddress;
            0    1     2  currentState  Lorg/apache/cassandra/gms/EndpointState;
            0    1     3   newStateKey  Lorg/apache/cassandra/gms/ApplicationState;
            0    1     4      newValue  Lorg/apache/cassandra/gms/VersionedValue;
    MethodParameters:
              Name  Flags
      endpoint      
      currentState  
      newStateKey   
      newValue      

  public void onJoin(java.net.InetAddress, org.apache.cassandra.gms.EndpointState);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
        start local 2 // org.apache.cassandra.gms.EndpointState epState
         0: .line 77
            aload 0 /* this */
            getfield org.apache.cassandra.locator.ReconnectableSnitchHelper.preferLocal:Z
            ifeq 2
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            aload 2 /* epState */
            invokevirtual org.apache.cassandra.gms.Gossiper.isDeadState:(Lorg/apache/cassandra/gms/EndpointState;)Z
            ifne 2
            aload 2 /* epState */
            getstatic org.apache.cassandra.gms.ApplicationState.INTERNAL_IP:Lorg/apache/cassandra/gms/ApplicationState;
            invokevirtual org.apache.cassandra.gms.EndpointState.getApplicationState:(Lorg/apache/cassandra/gms/ApplicationState;)Lorg/apache/cassandra/gms/VersionedValue;
            ifnull 2
         1: .line 78
            aload 0 /* this */
            aload 1 /* endpoint */
            aload 2 /* epState */
            getstatic org.apache.cassandra.gms.ApplicationState.INTERNAL_IP:Lorg/apache/cassandra/gms/ApplicationState;
            invokevirtual org.apache.cassandra.gms.EndpointState.getApplicationState:(Lorg/apache/cassandra/gms/ApplicationState;)Lorg/apache/cassandra/gms/VersionedValue;
            invokevirtual org.apache.cassandra.locator.ReconnectableSnitchHelper.reconnect:(Ljava/net/InetAddress;Lorg/apache/cassandra/gms/VersionedValue;)V
         2: .line 79
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.gms.EndpointState epState
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    3     1  endpoint  Ljava/net/InetAddress;
            0    3     2   epState  Lorg/apache/cassandra/gms/EndpointState;
    MethodParameters:
          Name  Flags
      endpoint  
      epState   

  public void onChange(java.net.InetAddress, org.apache.cassandra.gms.ApplicationState, org.apache.cassandra.gms.VersionedValue);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/ApplicationState;Lorg/apache/cassandra/gms/VersionedValue;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
        start local 2 // org.apache.cassandra.gms.ApplicationState state
        start local 3 // org.apache.cassandra.gms.VersionedValue value
         0: .line 83
            aload 0 /* this */
            getfield org.apache.cassandra.locator.ReconnectableSnitchHelper.preferLocal:Z
            ifeq 2
            aload 2 /* state */
            getstatic org.apache.cassandra.gms.ApplicationState.INTERNAL_IP:Lorg/apache/cassandra/gms/ApplicationState;
            if_acmpne 2
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            getstatic org.apache.cassandra.gms.Gossiper.instance:Lorg/apache/cassandra/gms/Gossiper;
            aload 1 /* endpoint */
            invokevirtual org.apache.cassandra.gms.Gossiper.getEndpointStateForEndpoint:(Ljava/net/InetAddress;)Lorg/apache/cassandra/gms/EndpointState;
            invokevirtual org.apache.cassandra.gms.Gossiper.isDeadState:(Lorg/apache/cassandra/gms/EndpointState;)Z
            ifne 2
         1: .line 84
            aload 0 /* this */
            aload 1 /* endpoint */
            aload 3 /* value */
            invokevirtual org.apache.cassandra.locator.ReconnectableSnitchHelper.reconnect:(Ljava/net/InetAddress;Lorg/apache/cassandra/gms/VersionedValue;)V
         2: .line 85
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.apache.cassandra.gms.VersionedValue value
        end local 2 // org.apache.cassandra.gms.ApplicationState state
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    3     1  endpoint  Ljava/net/InetAddress;
            0    3     2     state  Lorg/apache/cassandra/gms/ApplicationState;
            0    3     3     value  Lorg/apache/cassandra/gms/VersionedValue;
    MethodParameters:
          Name  Flags
      endpoint  
      state     
      value     

  public void onAlive(java.net.InetAddress, org.apache.cassandra.gms.EndpointState);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
        start local 2 // org.apache.cassandra.gms.EndpointState state
         0: .line 89
            aload 0 /* this */
            getfield org.apache.cassandra.locator.ReconnectableSnitchHelper.preferLocal:Z
            ifeq 2
            aload 2 /* state */
            getstatic org.apache.cassandra.gms.ApplicationState.INTERNAL_IP:Lorg/apache/cassandra/gms/ApplicationState;
            invokevirtual org.apache.cassandra.gms.EndpointState.getApplicationState:(Lorg/apache/cassandra/gms/ApplicationState;)Lorg/apache/cassandra/gms/VersionedValue;
            ifnull 2
         1: .line 90
            aload 0 /* this */
            aload 1 /* endpoint */
            aload 2 /* state */
            getstatic org.apache.cassandra.gms.ApplicationState.INTERNAL_IP:Lorg/apache/cassandra/gms/ApplicationState;
            invokevirtual org.apache.cassandra.gms.EndpointState.getApplicationState:(Lorg/apache/cassandra/gms/ApplicationState;)Lorg/apache/cassandra/gms/VersionedValue;
            invokevirtual org.apache.cassandra.locator.ReconnectableSnitchHelper.reconnect:(Ljava/net/InetAddress;Lorg/apache/cassandra/gms/VersionedValue;)V
         2: .line 91
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.gms.EndpointState state
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    3     1  endpoint  Ljava/net/InetAddress;
            0    3     2     state  Lorg/apache/cassandra/gms/EndpointState;
    MethodParameters:
          Name  Flags
      endpoint  
      state     

  public void onDead(java.net.InetAddress, org.apache.cassandra.gms.EndpointState);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
        start local 2 // org.apache.cassandra.gms.EndpointState state
         0: .line 96
            return
        end local 2 // org.apache.cassandra.gms.EndpointState state
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    1     1  endpoint  Ljava/net/InetAddress;
            0    1     2     state  Lorg/apache/cassandra/gms/EndpointState;
    MethodParameters:
          Name  Flags
      endpoint  
      state     

  public void onRemove(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
         0: .line 101
            return
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    1     1  endpoint  Ljava/net/InetAddress;
    MethodParameters:
          Name  Flags
      endpoint  

  public void onRestart(java.net.InetAddress, org.apache.cassandra.gms.EndpointState);
    descriptor: (Ljava/net/InetAddress;Lorg/apache/cassandra/gms/EndpointState;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
        start local 1 // java.net.InetAddress endpoint
        start local 2 // org.apache.cassandra.gms.EndpointState state
         0: .line 106
            return
        end local 2 // org.apache.cassandra.gms.EndpointState state
        end local 1 // java.net.InetAddress endpoint
        end local 0 // org.apache.cassandra.locator.ReconnectableSnitchHelper this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/locator/ReconnectableSnitchHelper;
            0    1     1  endpoint  Ljava/net/InetAddress;
            0    1     2     state  Lorg/apache/cassandra/gms/EndpointState;
    MethodParameters:
          Name  Flags
      endpoint  
      state     
}
SourceFile: "ReconnectableSnitchHelper.java"