public class org.apache.cassandra.dht.BootStrapper extends org.apache.cassandra.utils.progress.ProgressEventNotifierSupport
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.dht.BootStrapper
  super_class: org.apache.cassandra.utils.progress.ProgressEventNotifierSupport
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected final java.net.InetAddress address;
    descriptor: Ljava/net/InetAddress;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.util.Collection<org.apache.cassandra.dht.Token> tokens;
    descriptor: Ljava/util/Collection;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;

  protected final org.apache.cassandra.locator.TokenMetadata tokenMetadata;
    descriptor: Lorg/apache/cassandra/locator/TokenMetadata;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 49
            ldc Lorg/apache/cassandra/dht/BootStrapper;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.cassandra.dht.BootStrapper.$assertionsDisabled:Z
         3: .line 51
            ldc Lorg/apache/cassandra/dht/BootStrapper;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.dht.BootStrapper.logger:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.net.InetAddress, java.util.Collection<org.apache.cassandra.dht.Token>, org.apache.cassandra.locator.TokenMetadata);
    descriptor: (Ljava/net/InetAddress;Ljava/util/Collection;Lorg/apache/cassandra/locator/TokenMetadata;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.apache.cassandra.dht.BootStrapper this
        start local 1 // java.net.InetAddress address
        start local 2 // java.util.Collection tokens
        start local 3 // org.apache.cassandra.locator.TokenMetadata tmd
         0: .line 59
            aload 0 /* this */
            invokespecial org.apache.cassandra.utils.progress.ProgressEventNotifierSupport.<init>:()V
         1: .line 61
            getstatic org.apache.cassandra.dht.BootStrapper.$assertionsDisabled:Z
            ifne 2
            aload 1 /* address */
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 62
      StackMap locals: org.apache.cassandra.dht.BootStrapper java.net.InetAddress java.util.Collection org.apache.cassandra.locator.TokenMetadata
      StackMap stack:
            getstatic org.apache.cassandra.dht.BootStrapper.$assertionsDisabled:Z
            ifne 4
            aload 2 /* tokens */
            ifnull 3
            aload 2 /* tokens */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 4
      StackMap locals:
      StackMap stack:
         3: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 64
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* address */
            putfield org.apache.cassandra.dht.BootStrapper.address:Ljava/net/InetAddress;
         5: .line 65
            aload 0 /* this */
            aload 2 /* tokens */
            putfield org.apache.cassandra.dht.BootStrapper.tokens:Ljava/util/Collection;
         6: .line 66
            aload 0 /* this */
            aload 3 /* tmd */
            putfield org.apache.cassandra.dht.BootStrapper.tokenMetadata:Lorg/apache/cassandra/locator/TokenMetadata;
         7: .line 67
            return
        end local 3 // org.apache.cassandra.locator.TokenMetadata tmd
        end local 2 // java.util.Collection tokens
        end local 1 // java.net.InetAddress address
        end local 0 // org.apache.cassandra.dht.BootStrapper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/apache/cassandra/dht/BootStrapper;
            0    8     1  address  Ljava/net/InetAddress;
            0    8     2   tokens  Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
            0    8     3      tmd  Lorg/apache/cassandra/locator/TokenMetadata;
    Signature: (Ljava/net/InetAddress;Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;Lorg/apache/cassandra/locator/TokenMetadata;)V
    MethodParameters:
         Name  Flags
      address  
      tokens   
      tmd      

  public com.google.common.util.concurrent.ListenableFuture<org.apache.cassandra.streaming.StreamState> bootstrap(org.apache.cassandra.dht.StreamStateStore, boolean);
    descriptor: (Lorg/apache/cassandra/dht/StreamStateStore;Z)Lcom/google/common/util/concurrent/ListenableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=7, args_size=3
        start local 0 // org.apache.cassandra.dht.BootStrapper this
        start local 1 // org.apache.cassandra.dht.StreamStateStore stateStore
        start local 2 // boolean useStrictConsistency
         0: .line 71
            getstatic org.apache.cassandra.dht.BootStrapper.logger:Lorg/slf4j/Logger;
            ldc "Beginning bootstrap process"
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;)V
         1: .line 73
            new org.apache.cassandra.dht.RangeStreamer
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.dht.BootStrapper.tokenMetadata:Lorg/apache/cassandra/locator/TokenMetadata;
         2: .line 74
            aload 0 /* this */
            getfield org.apache.cassandra.dht.BootStrapper.tokens:Ljava/util/Collection;
         3: .line 75
            aload 0 /* this */
            getfield org.apache.cassandra.dht.BootStrapper.address:Ljava/net/InetAddress;
         4: .line 76
            ldc "Bootstrap"
         5: .line 77
            iload 2 /* useStrictConsistency */
         6: .line 78
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getEndpointSnitch:()Lorg/apache/cassandra/locator/IEndpointSnitch;
         7: .line 79
            aload 1 /* stateStore */
         8: .line 80
            iconst_1
         9: .line 73
            invokespecial org.apache.cassandra.dht.RangeStreamer.<init>:(Lorg/apache/cassandra/locator/TokenMetadata;Ljava/util/Collection;Ljava/net/InetAddress;Ljava/lang/String;ZLorg/apache/cassandra/locator/IEndpointSnitch;Lorg/apache/cassandra/dht/StreamStateStore;Z)V
            astore 3 /* streamer */
        start local 3 // org.apache.cassandra.dht.RangeStreamer streamer
        10: .line 81
            aload 3 /* streamer */
            new org.apache.cassandra.dht.RangeStreamer$FailureDetectorSourceFilter
            dup
            getstatic org.apache.cassandra.gms.FailureDetector.instance:Lorg/apache/cassandra/gms/IFailureDetector;
            invokespecial org.apache.cassandra.dht.RangeStreamer$FailureDetectorSourceFilter.<init>:(Lorg/apache/cassandra/gms/IFailureDetector;)V
            invokevirtual org.apache.cassandra.dht.RangeStreamer.addSourceFilter:(Lorg/apache/cassandra/dht/RangeStreamer$ISourceFilter;)V
        11: .line 82
            aload 3 /* streamer */
            new org.apache.cassandra.dht.RangeStreamer$ExcludeLocalNodeFilter
            dup
            invokespecial org.apache.cassandra.dht.RangeStreamer$ExcludeLocalNodeFilter.<init>:()V
            invokevirtual org.apache.cassandra.dht.RangeStreamer.addSourceFilter:(Lorg/apache/cassandra/dht/RangeStreamer$ISourceFilter;)V
        12: .line 84
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            invokevirtual org.apache.cassandra.config.Schema.getNonLocalStrategyKeyspaces:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 16
      StackMap locals: org.apache.cassandra.dht.BootStrapper org.apache.cassandra.dht.StreamStateStore int org.apache.cassandra.dht.RangeStreamer top java.util.Iterator
      StackMap stack:
        13: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* keyspaceName */
        start local 4 // java.lang.String keyspaceName
        14: .line 86
            aload 4 /* keyspaceName */
            invokestatic org.apache.cassandra.db.Keyspace.open:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            invokevirtual org.apache.cassandra.db.Keyspace.getReplicationStrategy:()Lorg/apache/cassandra/locator/AbstractReplicationStrategy;
            astore 6 /* strategy */
        start local 6 // org.apache.cassandra.locator.AbstractReplicationStrategy strategy
        15: .line 87
            aload 3 /* streamer */
            aload 4 /* keyspaceName */
            aload 6 /* strategy */
            aload 0 /* this */
            getfield org.apache.cassandra.dht.BootStrapper.tokenMetadata:Lorg/apache/cassandra/locator/TokenMetadata;
            aload 0 /* this */
            getfield org.apache.cassandra.dht.BootStrapper.tokens:Ljava/util/Collection;
            aload 0 /* this */
            getfield org.apache.cassandra.dht.BootStrapper.address:Ljava/net/InetAddress;
            invokevirtual org.apache.cassandra.locator.AbstractReplicationStrategy.getPendingAddressRanges:(Lorg/apache/cassandra/locator/TokenMetadata;Ljava/util/Collection;Ljava/net/InetAddress;)Ljava/util/Collection;
            invokevirtual org.apache.cassandra.dht.RangeStreamer.addRanges:(Ljava/lang/String;Ljava/util/Collection;)V
        end local 6 // org.apache.cassandra.locator.AbstractReplicationStrategy strategy
        end local 4 // java.lang.String keyspaceName
        16: .line 84
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        17: .line 90
            aload 3 /* streamer */
            invokevirtual org.apache.cassandra.dht.RangeStreamer.fetchAsync:()Lorg/apache/cassandra/streaming/StreamResultFuture;
            astore 4 /* bootstrapStreamResult */
        start local 4 // org.apache.cassandra.streaming.StreamResultFuture bootstrapStreamResult
        18: .line 91
            aload 4 /* bootstrapStreamResult */
            new org.apache.cassandra.dht.BootStrapper$1
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.dht.BootStrapper$1.<init>:(Lorg/apache/cassandra/dht/BootStrapper;)V
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.addEventListener:(Lorg/apache/cassandra/streaming/StreamEventHandler;)V
        19: .line 153
            aload 4 /* bootstrapStreamResult */
            areturn
        end local 4 // org.apache.cassandra.streaming.StreamResultFuture bootstrapStreamResult
        end local 3 // org.apache.cassandra.dht.RangeStreamer streamer
        end local 2 // boolean useStrictConsistency
        end local 1 // org.apache.cassandra.dht.StreamStateStore stateStore
        end local 0 // org.apache.cassandra.dht.BootStrapper this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   20     0                   this  Lorg/apache/cassandra/dht/BootStrapper;
            0   20     1             stateStore  Lorg/apache/cassandra/dht/StreamStateStore;
            0   20     2   useStrictConsistency  Z
           10   20     3               streamer  Lorg/apache/cassandra/dht/RangeStreamer;
           14   16     4           keyspaceName  Ljava/lang/String;
           15   16     6               strategy  Lorg/apache/cassandra/locator/AbstractReplicationStrategy;
           18   20     4  bootstrapStreamResult  Lorg/apache/cassandra/streaming/StreamResultFuture;
    Signature: (Lorg/apache/cassandra/dht/StreamStateStore;Z)Lcom/google/common/util/concurrent/ListenableFuture<Lorg/apache/cassandra/streaming/StreamState;>;
    MethodParameters:
                      Name  Flags
      stateStore            
      useStrictConsistency  

  public static java.util.Collection<org.apache.cassandra.dht.Token> getBootstrapTokens(org.apache.cassandra.locator.TokenMetadata, java.net.InetAddress, int);
    descriptor: (Lorg/apache/cassandra/locator/TokenMetadata;Ljava/net/InetAddress;I)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.apache.cassandra.locator.TokenMetadata metadata
        start local 1 // java.net.InetAddress address
        start local 2 // int schemaWaitDelay
         0: .line 163
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getAllocateTokensForKeyspace:()Ljava/lang/String;
            astore 3 /* allocationKeyspace */
        start local 3 // java.lang.String allocationKeyspace
         1: .line 164
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getInitialTokens:()Ljava/util/Collection;
            astore 4 /* initialTokens */
        start local 4 // java.util.Collection initialTokens
         2: .line 165
            aload 4 /* initialTokens */
            invokeinterface java.util.Collection.size:()I
            ifle 4
            aload 3 /* allocationKeyspace */
            ifnull 4
         3: .line 166
            getstatic org.apache.cassandra.dht.BootStrapper.logger:Lorg/slf4j/Logger;
            ldc "manually specified tokens override automatic allocation"
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
         4: .line 169
      StackMap locals: java.lang.String java.util.Collection
      StackMap stack:
            aload 4 /* initialTokens */
            invokeinterface java.util.Collection.size:()I
            ifle 6
         5: .line 170
            aload 0 /* metadata */
            aload 4 /* initialTokens */
            invokestatic org.apache.cassandra.dht.BootStrapper.getSpecifiedTokens:(Lorg/apache/cassandra/locator/TokenMetadata;Ljava/util/Collection;)Ljava/util/Collection;
            areturn
         6: .line 172
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getNumTokens:()I
            istore 5 /* numTokens */
        start local 5 // int numTokens
         7: .line 173
            iload 5 /* numTokens */
            iconst_1
            if_icmpge 9
         8: .line 174
            new org.apache.cassandra.exceptions.ConfigurationException
            dup
            ldc "num_tokens must be >= 1"
            invokespecial org.apache.cassandra.exceptions.ConfigurationException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 176
      StackMap locals: int
      StackMap stack:
            aload 3 /* allocationKeyspace */
            ifnull 11
        10: .line 177
            aload 0 /* metadata */
            aload 1 /* address */
            aload 3 /* allocationKeyspace */
            iload 5 /* numTokens */
            iload 2 /* schemaWaitDelay */
            invokestatic org.apache.cassandra.dht.BootStrapper.allocateTokens:(Lorg/apache/cassandra/locator/TokenMetadata;Ljava/net/InetAddress;Ljava/lang/String;II)Ljava/util/Collection;
            areturn
        11: .line 179
      StackMap locals:
      StackMap stack:
            iload 5 /* numTokens */
            iconst_1
            if_icmpne 13
        12: .line 180
            getstatic org.apache.cassandra.dht.BootStrapper.logger:Lorg/slf4j/Logger;
            ldc "Picking random token for a single vnode.  You should probably add more vnodes and/or use the automatic token allocation mechanism."
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;)V
        13: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* metadata */
            iload 5 /* numTokens */
            invokestatic org.apache.cassandra.dht.BootStrapper.getRandomTokens:(Lorg/apache/cassandra/locator/TokenMetadata;I)Ljava/util/Collection;
            areturn
        end local 5 // int numTokens
        end local 4 // java.util.Collection initialTokens
        end local 3 // java.lang.String allocationKeyspace
        end local 2 // int schemaWaitDelay
        end local 1 // java.net.InetAddress address
        end local 0 // org.apache.cassandra.locator.TokenMetadata metadata
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   14     0            metadata  Lorg/apache/cassandra/locator/TokenMetadata;
            0   14     1             address  Ljava/net/InetAddress;
            0   14     2     schemaWaitDelay  I
            1   14     3  allocationKeyspace  Ljava/lang/String;
            2   14     4       initialTokens  Ljava/util/Collection<Ljava/lang/String;>;
            7   14     5           numTokens  I
    Exceptions:
      throws org.apache.cassandra.exceptions.ConfigurationException
    Signature: (Lorg/apache/cassandra/locator/TokenMetadata;Ljava/net/InetAddress;I)Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
                 Name  Flags
      metadata         final
      address          
      schemaWaitDelay  

  private static java.util.Collection<org.apache.cassandra.dht.Token> getSpecifiedTokens(org.apache.cassandra.locator.TokenMetadata, java.util.Collection<java.lang.String>);
    descriptor: (Lorg/apache/cassandra/locator/TokenMetadata;Ljava/util/Collection;)Ljava/util/Collection;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.apache.cassandra.locator.TokenMetadata metadata
        start local 1 // java.util.Collection initialTokens
         0: .line 188
            getstatic org.apache.cassandra.dht.BootStrapper.logger:Lorg/slf4j/Logger;
            ldc "tokens manually specified as {}"
            aload 1 /* initialTokens */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 189
            new java.util.ArrayList
            dup
            aload 1 /* initialTokens */
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* tokens */
        start local 2 // java.util.List tokens
         2: .line 190
            aload 1 /* initialTokens */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 8
      StackMap locals: org.apache.cassandra.locator.TokenMetadata java.util.Collection java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* tokenString */
        start local 3 // java.lang.String tokenString
         4: .line 192
            aload 0 /* metadata */
            getfield org.apache.cassandra.locator.TokenMetadata.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
            invokeinterface org.apache.cassandra.dht.IPartitioner.getTokenFactory:()Lorg/apache/cassandra/dht/Token$TokenFactory;
            aload 3 /* tokenString */
            invokevirtual org.apache.cassandra.dht.Token$TokenFactory.fromString:(Ljava/lang/String;)Lorg/apache/cassandra/dht/Token;
            astore 5 /* token */
        start local 5 // org.apache.cassandra.dht.Token token
         5: .line 193
            aload 0 /* metadata */
            aload 5 /* token */
            invokevirtual org.apache.cassandra.locator.TokenMetadata.getEndpoint:(Lorg/apache/cassandra/dht/Token;)Ljava/net/InetAddress;
            ifnull 7
         6: .line 194
            new org.apache.cassandra.exceptions.ConfigurationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Bootstrapping to existing token "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* tokenString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is not allowed (decommission/removenode the old node first)."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.ConfigurationException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 195
      StackMap locals: org.apache.cassandra.locator.TokenMetadata java.util.Collection java.util.List java.lang.String java.util.Iterator org.apache.cassandra.dht.Token
      StackMap stack:
            aload 2 /* tokens */
            aload 5 /* token */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.apache.cassandra.dht.Token token
        end local 3 // java.lang.String tokenString
         8: .line 190
      StackMap locals: org.apache.cassandra.locator.TokenMetadata java.util.Collection java.util.List top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         9: .line 197
            aload 2 /* tokens */
            areturn
        end local 2 // java.util.List tokens
        end local 1 // java.util.Collection initialTokens
        end local 0 // org.apache.cassandra.locator.TokenMetadata metadata
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0       metadata  Lorg/apache/cassandra/locator/TokenMetadata;
            0   10     1  initialTokens  Ljava/util/Collection<Ljava/lang/String;>;
            2   10     2         tokens  Ljava/util/List<Lorg/apache/cassandra/dht/Token;>;
            4    8     3    tokenString  Ljava/lang/String;
            5    8     5          token  Lorg/apache/cassandra/dht/Token;
    Signature: (Lorg/apache/cassandra/locator/TokenMetadata;Ljava/util/Collection<Ljava/lang/String;>;)Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
               Name  Flags
      metadata       final
      initialTokens  

  static java.util.Collection<org.apache.cassandra.dht.Token> allocateTokens(org.apache.cassandra.locator.TokenMetadata, java.net.InetAddress, java.lang.String, int, int);
    descriptor: (Lorg/apache/cassandra/locator/TokenMetadata;Ljava/net/InetAddress;Ljava/lang/String;II)Ljava/util/Collection;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // org.apache.cassandra.locator.TokenMetadata metadata
        start local 1 // java.net.InetAddress address
        start local 2 // java.lang.String allocationKeyspace
        start local 3 // int numTokens
        start local 4 // int schemaWaitDelay
         0: .line 206
            getstatic org.apache.cassandra.service.StorageService.instance:Lorg/apache/cassandra/service/StorageService;
            iload 4 /* schemaWaitDelay */
            invokevirtual org.apache.cassandra.service.StorageService.waitForSchema:(I)V
         1: .line 207
            invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
            invokestatic java.net.InetAddress.getLoopbackAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifne 3
         2: .line 208
            invokestatic org.apache.cassandra.gms.Gossiper.waitToSettle:()V
         3: .line 210
      StackMap locals:
      StackMap stack:
            aload 2 /* allocationKeyspace */
            invokestatic org.apache.cassandra.db.Keyspace.open:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            astore 5 /* ks */
        start local 5 // org.apache.cassandra.db.Keyspace ks
         4: .line 211
            aload 5 /* ks */
            ifnonnull 6
         5: .line 212
            new org.apache.cassandra.exceptions.ConfigurationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Problem opening token allocation keyspace "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* allocationKeyspace */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.exceptions.ConfigurationException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 213
      StackMap locals: org.apache.cassandra.db.Keyspace
      StackMap stack:
            aload 5 /* ks */
            invokevirtual org.apache.cassandra.db.Keyspace.getReplicationStrategy:()Lorg/apache/cassandra/locator/AbstractReplicationStrategy;
            astore 6 /* rs */
        start local 6 // org.apache.cassandra.locator.AbstractReplicationStrategy rs
         7: .line 215
            aload 0 /* metadata */
            aload 6 /* rs */
            aload 1 /* address */
            iload 3 /* numTokens */
            invokestatic org.apache.cassandra.dht.tokenallocator.TokenAllocation.allocateTokens:(Lorg/apache/cassandra/locator/TokenMetadata;Lorg/apache/cassandra/locator/AbstractReplicationStrategy;Ljava/net/InetAddress;I)Ljava/util/Collection;
            areturn
        end local 6 // org.apache.cassandra.locator.AbstractReplicationStrategy rs
        end local 5 // org.apache.cassandra.db.Keyspace ks
        end local 4 // int schemaWaitDelay
        end local 3 // int numTokens
        end local 2 // java.lang.String allocationKeyspace
        end local 1 // java.net.InetAddress address
        end local 0 // org.apache.cassandra.locator.TokenMetadata metadata
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0            metadata  Lorg/apache/cassandra/locator/TokenMetadata;
            0    8     1             address  Ljava/net/InetAddress;
            0    8     2  allocationKeyspace  Ljava/lang/String;
            0    8     3           numTokens  I
            0    8     4     schemaWaitDelay  I
            4    8     5                  ks  Lorg/apache/cassandra/db/Keyspace;
            7    8     6                  rs  Lorg/apache/cassandra/locator/AbstractReplicationStrategy;
    Signature: (Lorg/apache/cassandra/locator/TokenMetadata;Ljava/net/InetAddress;Ljava/lang/String;II)Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
                    Name  Flags
      metadata            final
      address             
      allocationKeyspace  
      numTokens           
      schemaWaitDelay     

  public static java.util.Collection<org.apache.cassandra.dht.Token> getRandomTokens(org.apache.cassandra.locator.TokenMetadata, int);
    descriptor: (Lorg/apache/cassandra/locator/TokenMetadata;I)Ljava/util/Collection;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.apache.cassandra.locator.TokenMetadata metadata
        start local 1 // int numTokens
         0: .line 220
            new java.util.HashSet
            dup
            iload 1 /* numTokens */
            invokespecial java.util.HashSet.<init>:(I)V
            astore 2 /* tokens */
        start local 2 // java.util.Set tokens
         1: .line 221
            goto 5
         2: .line 223
      StackMap locals: java.util.Set
      StackMap stack:
            aload 0 /* metadata */
            getfield org.apache.cassandra.locator.TokenMetadata.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
            invokeinterface org.apache.cassandra.dht.IPartitioner.getRandomToken:()Lorg/apache/cassandra/dht/Token;
            astore 3 /* token */
        start local 3 // org.apache.cassandra.dht.Token token
         3: .line 224
            aload 0 /* metadata */
            aload 3 /* token */
            invokevirtual org.apache.cassandra.locator.TokenMetadata.getEndpoint:(Lorg/apache/cassandra/dht/Token;)Ljava/net/InetAddress;
            ifnonnull 5
         4: .line 225
            aload 2 /* tokens */
            aload 3 /* token */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // org.apache.cassandra.dht.Token token
         5: .line 221
      StackMap locals:
      StackMap stack:
            aload 2 /* tokens */
            invokeinterface java.util.Set.size:()I
            iload 1 /* numTokens */
            if_icmplt 2
         6: .line 228
            getstatic org.apache.cassandra.dht.BootStrapper.logger:Lorg/slf4j/Logger;
            ldc "Generated random tokens. tokens are {}"
            aload 2 /* tokens */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         7: .line 229
            aload 2 /* tokens */
            areturn
        end local 2 // java.util.Set tokens
        end local 1 // int numTokens
        end local 0 // org.apache.cassandra.locator.TokenMetadata metadata
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0   metadata  Lorg/apache/cassandra/locator/TokenMetadata;
            0    8     1  numTokens  I
            1    8     2     tokens  Ljava/util/Set<Lorg/apache/cassandra/dht/Token;>;
            3    5     3      token  Lorg/apache/cassandra/dht/Token;
    Signature: (Lorg/apache/cassandra/locator/TokenMetadata;I)Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
           Name  Flags
      metadata   
      numTokens  

  static void access$0(org.apache.cassandra.dht.BootStrapper, java.lang.String, org.apache.cassandra.utils.progress.ProgressEvent);
    descriptor: (Lorg/apache/cassandra/dht/BootStrapper;Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            aload 2
            invokevirtual org.apache.cassandra.dht.BootStrapper.fireProgressEvent:(Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "BootStrapper.java"
NestMembers:
  org.apache.cassandra.dht.BootStrapper$1  org.apache.cassandra.dht.BootStrapper$StringSerializer
InnerClasses:
  org.apache.cassandra.dht.BootStrapper$1
  public StringSerializer = org.apache.cassandra.dht.BootStrapper$StringSerializer of org.apache.cassandra.dht.BootStrapper
  public ExcludeLocalNodeFilter = org.apache.cassandra.dht.RangeStreamer$ExcludeLocalNodeFilter of org.apache.cassandra.dht.RangeStreamer
  public FailureDetectorSourceFilter = org.apache.cassandra.dht.RangeStreamer$FailureDetectorSourceFilter of org.apache.cassandra.dht.RangeStreamer
  public abstract ISourceFilter = org.apache.cassandra.dht.RangeStreamer$ISourceFilter of org.apache.cassandra.dht.RangeStreamer
  public abstract TokenFactory = org.apache.cassandra.dht.Token$TokenFactory of org.apache.cassandra.dht.Token