public final class org.apache.cassandra.streaming.StreamResultFuture extends com.google.common.util.concurrent.AbstractFuture<org.apache.cassandra.streaming.StreamState>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.cassandra.streaming.StreamResultFuture
  super_class: com.google.common.util.concurrent.AbstractFuture
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public final java.util.UUID planId;
    descriptor: Ljava/util/UUID;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final java.lang.String description;
    descriptor: Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  private final org.apache.cassandra.streaming.StreamCoordinator coordinator;
    descriptor: Lorg/apache/cassandra/streaming/StreamCoordinator;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Collection<org.apache.cassandra.streaming.StreamEventHandler> eventListeners;
    descriptor: Ljava/util/Collection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Collection<Lorg/apache/cassandra/streaming/StreamEventHandler;>;

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

  private void <init>(java.util.UUID, java.lang.String, org.apache.cassandra.streaming.StreamCoordinator);
    descriptor: (Ljava/util/UUID;Ljava/lang/String;Lorg/apache/cassandra/streaming/StreamCoordinator;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // java.util.UUID planId
        start local 2 // java.lang.String description
        start local 3 // org.apache.cassandra.streaming.StreamCoordinator coordinator
         0: .line 63
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.AbstractFuture.<init>:()V
         1: .line 53
            aload 0 /* this */
            new java.util.concurrent.ConcurrentLinkedQueue
            dup
            invokespecial java.util.concurrent.ConcurrentLinkedQueue.<init>:()V
            putfield org.apache.cassandra.streaming.StreamResultFuture.eventListeners:Ljava/util/Collection;
         2: .line 65
            aload 0 /* this */
            aload 1 /* planId */
            putfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
         3: .line 66
            aload 0 /* this */
            aload 2 /* description */
            putfield org.apache.cassandra.streaming.StreamResultFuture.description:Ljava/lang/String;
         4: .line 67
            aload 0 /* this */
            aload 3 /* coordinator */
            putfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
         5: .line 70
            aload 3 /* coordinator */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.isReceiving:()Z
            ifne 7
            aload 3 /* coordinator */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.hasActiveSessions:()Z
            ifne 7
         6: .line 71
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.getCurrentState:()Lorg/apache/cassandra/streaming/StreamState;
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.set:(Ljava/lang/Object;)Z
            pop
         7: .line 72
      StackMap locals: org.apache.cassandra.streaming.StreamResultFuture java.util.UUID java.lang.String org.apache.cassandra.streaming.StreamCoordinator
      StackMap stack:
            return
        end local 3 // org.apache.cassandra.streaming.StreamCoordinator coordinator
        end local 2 // java.lang.String description
        end local 1 // java.util.UUID planId
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    8     1       planId  Ljava/util/UUID;
            0    8     2  description  Ljava/lang/String;
            0    8     3  coordinator  Lorg/apache/cassandra/streaming/StreamCoordinator;
    MethodParameters:
             Name  Flags
      planId       
      description  
      coordinator  

  private void <init>(java.util.UUID, java.lang.String, boolean, boolean);
    descriptor: (Ljava/util/UUID;Ljava/lang/String;ZZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=5, args_size=5
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // java.util.UUID planId
        start local 2 // java.lang.String description
        start local 3 // boolean keepSSTableLevels
        start local 4 // boolean isIncremental
         0: .line 76
            aload 0 /* this */
            aload 1 /* planId */
            aload 2 /* description */
            new org.apache.cassandra.streaming.StreamCoordinator
            dup
            iconst_0
            iload 3 /* keepSSTableLevels */
            iload 4 /* isIncremental */
         1: .line 77
            new org.apache.cassandra.streaming.DefaultConnectionFactory
            dup
            invokespecial org.apache.cassandra.streaming.DefaultConnectionFactory.<init>:()V
            iconst_0
            invokespecial org.apache.cassandra.streaming.StreamCoordinator.<init>:(IZZLorg/apache/cassandra/streaming/StreamConnectionFactory;Z)V
            invokespecial org.apache.cassandra.streaming.StreamResultFuture.<init>:(Ljava/util/UUID;Ljava/lang/String;Lorg/apache/cassandra/streaming/StreamCoordinator;)V
         2: .line 78
            return
        end local 4 // boolean isIncremental
        end local 3 // boolean keepSSTableLevels
        end local 2 // java.lang.String description
        end local 1 // java.util.UUID planId
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    3     1             planId  Ljava/util/UUID;
            0    3     2        description  Ljava/lang/String;
            0    3     3  keepSSTableLevels  Z
            0    3     4      isIncremental  Z
    MethodParameters:
                   Name  Flags
      planId             
      description        
      keepSSTableLevels  
      isIncremental      

  static org.apache.cassandra.streaming.StreamResultFuture init(java.util.UUID, java.lang.String, java.util.Collection<org.apache.cassandra.streaming.StreamEventHandler>, org.apache.cassandra.streaming.StreamCoordinator);
    descriptor: (Ljava/util/UUID;Ljava/lang/String;Ljava/util/Collection;Lorg/apache/cassandra/streaming/StreamCoordinator;)Lorg/apache/cassandra/streaming/StreamResultFuture;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // java.util.UUID planId
        start local 1 // java.lang.String description
        start local 2 // java.util.Collection listeners
        start local 3 // org.apache.cassandra.streaming.StreamCoordinator coordinator
         0: .line 83
            aload 0 /* planId */
            aload 1 /* description */
            aload 3 /* coordinator */
            invokestatic org.apache.cassandra.streaming.StreamResultFuture.createAndRegister:(Ljava/util/UUID;Ljava/lang/String;Lorg/apache/cassandra/streaming/StreamCoordinator;)Lorg/apache/cassandra/streaming/StreamResultFuture;
            astore 4 /* future */
        start local 4 // org.apache.cassandra.streaming.StreamResultFuture future
         1: .line 84
            aload 2 /* listeners */
            ifnull 6
         2: .line 86
            aload 2 /* listeners */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 5
      StackMap locals: java.util.UUID java.lang.String java.util.Collection org.apache.cassandra.streaming.StreamCoordinator org.apache.cassandra.streaming.StreamResultFuture top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.streaming.StreamEventHandler
            astore 5 /* listener */
        start local 5 // org.apache.cassandra.streaming.StreamEventHandler listener
         4: .line 87
            aload 4 /* future */
            aload 5 /* listener */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.addEventListener:(Lorg/apache/cassandra/streaming/StreamEventHandler;)V
        end local 5 // org.apache.cassandra.streaming.StreamEventHandler listener
         5: .line 86
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 90
      StackMap locals: java.util.UUID java.lang.String java.util.Collection org.apache.cassandra.streaming.StreamCoordinator org.apache.cassandra.streaming.StreamResultFuture
      StackMap stack:
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{}] Executing streaming plan for {}"
            aload 0 /* planId */
            aload 1 /* description */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 93
            aload 3 /* coordinator */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.getAllStreamSessions:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 10
      StackMap locals: java.util.UUID java.lang.String java.util.Collection org.apache.cassandra.streaming.StreamCoordinator org.apache.cassandra.streaming.StreamResultFuture top java.util.Iterator
      StackMap stack:
         8: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.streaming.StreamSession
            astore 5 /* session */
        start local 5 // org.apache.cassandra.streaming.StreamSession session
         9: .line 95
            aload 5 /* session */
            aload 4 /* future */
            invokevirtual org.apache.cassandra.streaming.StreamSession.init:(Lorg/apache/cassandra/streaming/StreamResultFuture;)V
        end local 5 // org.apache.cassandra.streaming.StreamSession session
        10: .line 93
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 98
            aload 3 /* coordinator */
            aload 4 /* future */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.connect:(Lorg/apache/cassandra/streaming/StreamResultFuture;)V
        12: .line 100
            aload 4 /* future */
            areturn
        end local 4 // org.apache.cassandra.streaming.StreamResultFuture future
        end local 3 // org.apache.cassandra.streaming.StreamCoordinator coordinator
        end local 2 // java.util.Collection listeners
        end local 1 // java.lang.String description
        end local 0 // java.util.UUID planId
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0       planId  Ljava/util/UUID;
            0   13     1  description  Ljava/lang/String;
            0   13     2    listeners  Ljava/util/Collection<Lorg/apache/cassandra/streaming/StreamEventHandler;>;
            0   13     3  coordinator  Lorg/apache/cassandra/streaming/StreamCoordinator;
            1   13     4       future  Lorg/apache/cassandra/streaming/StreamResultFuture;
            4    5     5     listener  Lorg/apache/cassandra/streaming/StreamEventHandler;
            9   10     5      session  Lorg/apache/cassandra/streaming/StreamSession;
    Signature: (Ljava/util/UUID;Ljava/lang/String;Ljava/util/Collection<Lorg/apache/cassandra/streaming/StreamEventHandler;>;Lorg/apache/cassandra/streaming/StreamCoordinator;)Lorg/apache/cassandra/streaming/StreamResultFuture;
    MethodParameters:
             Name  Flags
      planId       
      description  
      listeners    
      coordinator  

  public static synchronized org.apache.cassandra.streaming.StreamResultFuture initReceivingSide(int, java.util.UUID, java.lang.String, java.net.InetAddress, org.apache.cassandra.net.IncomingStreamingConnection, boolean, int, boolean, boolean);
    descriptor: (ILjava/util/UUID;Ljava/lang/String;Ljava/net/InetAddress;Lorg/apache/cassandra/net/IncomingStreamingConnection;ZIZZ)Lorg/apache/cassandra/streaming/StreamResultFuture;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=10, args_size=9
        start local 0 // int sessionIndex
        start local 1 // java.util.UUID planId
        start local 2 // java.lang.String description
        start local 3 // java.net.InetAddress from
        start local 4 // org.apache.cassandra.net.IncomingStreamingConnection connection
        start local 5 // boolean isForOutgoing
        start local 6 // int version
        start local 7 // boolean keepSSTableLevel
        start local 8 // boolean isIncremental
         0: .line 113
            getstatic org.apache.cassandra.streaming.StreamManager.instance:Lorg/apache/cassandra/streaming/StreamManager;
            aload 1 /* planId */
            invokevirtual org.apache.cassandra.streaming.StreamManager.getReceivingStream:(Ljava/util/UUID;)Lorg/apache/cassandra/streaming/StreamResultFuture;
            astore 9 /* future */
        start local 9 // org.apache.cassandra.streaming.StreamResultFuture future
         1: .line 114
            aload 9 /* future */
            ifnonnull 5
         2: .line 116
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{} ID#{}] Creating new streaming plan for {}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* planId */
            aastore
            dup
            iconst_1
            iload 0 /* sessionIndex */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* description */
            aastore
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
         3: .line 119
            new org.apache.cassandra.streaming.StreamResultFuture
            dup
            aload 1 /* planId */
            aload 2 /* description */
            iload 7 /* keepSSTableLevel */
            iload 8 /* isIncremental */
            invokespecial org.apache.cassandra.streaming.StreamResultFuture.<init>:(Ljava/util/UUID;Ljava/lang/String;ZZ)V
            astore 9 /* future */
         4: .line 120
            getstatic org.apache.cassandra.streaming.StreamManager.instance:Lorg/apache/cassandra/streaming/StreamManager;
            aload 9 /* future */
            invokevirtual org.apache.cassandra.streaming.StreamManager.registerReceiving:(Lorg/apache/cassandra/streaming/StreamResultFuture;)V
         5: .line 122
      StackMap locals: org.apache.cassandra.streaming.StreamResultFuture
      StackMap stack:
            aload 9 /* future */
            aload 3 /* from */
            iload 0 /* sessionIndex */
            aload 4 /* connection */
            iload 5 /* isForOutgoing */
            iload 6 /* version */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.attachConnection:(Ljava/net/InetAddress;ILorg/apache/cassandra/net/IncomingStreamingConnection;ZI)V
         6: .line 123
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{}, ID#{}] Received streaming plan for {}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* planId */
            aastore
            dup
            iconst_1
            iload 0 /* sessionIndex */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* description */
            aastore
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
         7: .line 124
            aload 9 /* future */
            areturn
        end local 9 // org.apache.cassandra.streaming.StreamResultFuture future
        end local 8 // boolean isIncremental
        end local 7 // boolean keepSSTableLevel
        end local 6 // int version
        end local 5 // boolean isForOutgoing
        end local 4 // org.apache.cassandra.net.IncomingStreamingConnection connection
        end local 3 // java.net.InetAddress from
        end local 2 // java.lang.String description
        end local 1 // java.util.UUID planId
        end local 0 // int sessionIndex
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0      sessionIndex  I
            0    8     1            planId  Ljava/util/UUID;
            0    8     2       description  Ljava/lang/String;
            0    8     3              from  Ljava/net/InetAddress;
            0    8     4        connection  Lorg/apache/cassandra/net/IncomingStreamingConnection;
            0    8     5     isForOutgoing  Z
            0    8     6           version  I
            0    8     7  keepSSTableLevel  Z
            0    8     8     isIncremental  Z
            1    8     9            future  Lorg/apache/cassandra/streaming/StreamResultFuture;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      sessionIndex      
      planId            
      description       
      from              
      connection        
      isForOutgoing     
      version           
      keepSSTableLevel  
      isIncremental     

  private static org.apache.cassandra.streaming.StreamResultFuture createAndRegister(java.util.UUID, java.lang.String, org.apache.cassandra.streaming.StreamCoordinator);
    descriptor: (Ljava/util/UUID;Ljava/lang/String;Lorg/apache/cassandra/streaming/StreamCoordinator;)Lorg/apache/cassandra/streaming/StreamResultFuture;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.util.UUID planId
        start local 1 // java.lang.String description
        start local 2 // org.apache.cassandra.streaming.StreamCoordinator coordinator
         0: .line 129
            new org.apache.cassandra.streaming.StreamResultFuture
            dup
            aload 0 /* planId */
            aload 1 /* description */
            aload 2 /* coordinator */
            invokespecial org.apache.cassandra.streaming.StreamResultFuture.<init>:(Ljava/util/UUID;Ljava/lang/String;Lorg/apache/cassandra/streaming/StreamCoordinator;)V
            astore 3 /* future */
        start local 3 // org.apache.cassandra.streaming.StreamResultFuture future
         1: .line 130
            getstatic org.apache.cassandra.streaming.StreamManager.instance:Lorg/apache/cassandra/streaming/StreamManager;
            aload 3 /* future */
            invokevirtual org.apache.cassandra.streaming.StreamManager.register:(Lorg/apache/cassandra/streaming/StreamResultFuture;)V
         2: .line 131
            aload 3 /* future */
            areturn
        end local 3 // org.apache.cassandra.streaming.StreamResultFuture future
        end local 2 // org.apache.cassandra.streaming.StreamCoordinator coordinator
        end local 1 // java.lang.String description
        end local 0 // java.util.UUID planId
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0       planId  Ljava/util/UUID;
            0    3     1  description  Ljava/lang/String;
            0    3     2  coordinator  Lorg/apache/cassandra/streaming/StreamCoordinator;
            1    3     3       future  Lorg/apache/cassandra/streaming/StreamResultFuture;
    MethodParameters:
             Name  Flags
      planId       
      description  
      coordinator  

  private void attachConnection(java.net.InetAddress, int, org.apache.cassandra.net.IncomingStreamingConnection, boolean, int);
    descriptor: (Ljava/net/InetAddress;ILorg/apache/cassandra/net/IncomingStreamingConnection;ZI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=6
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // java.net.InetAddress from
        start local 2 // int sessionIndex
        start local 3 // org.apache.cassandra.net.IncomingStreamingConnection connection
        start local 4 // boolean isForOutgoing
        start local 5 // int version
         0: .line 136
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
            aload 1 /* from */
            iload 2 /* sessionIndex */
            aload 3 /* connection */
            getfield org.apache.cassandra.net.IncomingStreamingConnection.socket:Ljava/net/Socket;
            invokevirtual java.net.Socket.getInetAddress:()Ljava/net/InetAddress;
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.getOrCreateSessionById:(Ljava/net/InetAddress;ILjava/net/InetAddress;)Lorg/apache/cassandra/streaming/StreamSession;
            astore 6 /* session */
        start local 6 // org.apache.cassandra.streaming.StreamSession session
         1: .line 137
            aload 6 /* session */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.streaming.StreamSession.init:(Lorg/apache/cassandra/streaming/StreamResultFuture;)V
         2: .line 138
            aload 6 /* session */
            getfield org.apache.cassandra.streaming.StreamSession.handler:Lorg/apache/cassandra/streaming/ConnectionHandler;
            aload 3 /* connection */
            iload 4 /* isForOutgoing */
            iload 5 /* version */
            invokevirtual org.apache.cassandra.streaming.ConnectionHandler.initiateOnReceivingSide:(Lorg/apache/cassandra/net/IncomingStreamingConnection;ZI)V
         3: .line 139
            return
        end local 6 // org.apache.cassandra.streaming.StreamSession session
        end local 5 // int version
        end local 4 // boolean isForOutgoing
        end local 3 // org.apache.cassandra.net.IncomingStreamingConnection connection
        end local 2 // int sessionIndex
        end local 1 // java.net.InetAddress from
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    4     1           from  Ljava/net/InetAddress;
            0    4     2   sessionIndex  I
            0    4     3     connection  Lorg/apache/cassandra/net/IncomingStreamingConnection;
            0    4     4  isForOutgoing  Z
            0    4     5        version  I
            1    4     6        session  Lorg/apache/cassandra/streaming/StreamSession;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      from           
      sessionIndex   
      connection     
      isForOutgoing  
      version        

  public void addEventListener(org.apache.cassandra.streaming.StreamEventHandler);
    descriptor: (Lorg/apache/cassandra/streaming/StreamEventHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // org.apache.cassandra.streaming.StreamEventHandler listener
         0: .line 143
            aload 0 /* this */
            aload 1 /* listener */
            invokestatic com.google.common.util.concurrent.Futures.addCallback:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/FutureCallback;)V
         1: .line 144
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.eventListeners:Ljava/util/Collection;
            aload 1 /* listener */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
         2: .line 145
            return
        end local 1 // org.apache.cassandra.streaming.StreamEventHandler listener
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    3     1  listener  Lorg/apache/cassandra/streaming/StreamEventHandler;
    MethodParameters:
          Name  Flags
      listener  

  public org.apache.cassandra.streaming.StreamState getCurrentState();
    descriptor: ()Lorg/apache/cassandra/streaming/StreamState;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
         0: .line 152
            new org.apache.cassandra.streaming.StreamState
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.description:Ljava/lang/String;
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.getAllSessionInfo:()Ljava/util/Set;
            invokespecial org.apache.cassandra.streaming.StreamState.<init>:(Ljava/util/UUID;Ljava/lang/String;Ljava/util/Set;)V
            areturn
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/streaming/StreamResultFuture;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // java.lang.Object o
         0: .line 158
            aload 0 /* this */
            aload 1 /* o */
            if_acmpne 1
            iconst_1
            ireturn
         1: .line 159
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            ifnull 2
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 1 /* o */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            if_acmpeq 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
         3: .line 160
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast org.apache.cassandra.streaming.StreamResultFuture
            astore 2 /* that */
        start local 2 // org.apache.cassandra.streaming.StreamResultFuture that
         4: .line 161
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            aload 2 /* that */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            invokevirtual java.util.UUID.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // org.apache.cassandra.streaming.StreamResultFuture that
        end local 1 // java.lang.Object o
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    5     1     o  Ljava/lang/Object;
            4    5     2  that  Lorg/apache/cassandra/streaming/StreamResultFuture;
    MethodParameters:
      Name  Flags
      o     

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
         0: .line 167
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            invokevirtual java.util.UUID.hashCode:()I
            ireturn
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/streaming/StreamResultFuture;

  void handleSessionPrepared(org.apache.cassandra.streaming.StreamSession);
    descriptor: (Lorg/apache/cassandra/streaming/StreamSession;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // org.apache.cassandra.streaming.StreamSession session
         0: .line 172
            aload 1 /* session */
            invokevirtual org.apache.cassandra.streaming.StreamSession.getSessionInfo:()Lorg/apache/cassandra/streaming/SessionInfo;
            astore 2 /* sessionInfo */
        start local 2 // org.apache.cassandra.streaming.SessionInfo sessionInfo
         1: .line 173
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{} ID#{}] Prepare completed. Receiving {} files({}), sending {} files({})"
            bipush 6
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 174
            aload 1 /* session */
            invokevirtual org.apache.cassandra.streaming.StreamSession.planId:()Ljava/util/UUID;
            aastore
            dup
            iconst_1
         3: .line 175
            aload 1 /* session */
            invokevirtual org.apache.cassandra.streaming.StreamSession.sessionIndex:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
         4: .line 176
            aload 2 /* sessionInfo */
            invokevirtual org.apache.cassandra.streaming.SessionInfo.getTotalFilesToReceive:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_3
         5: .line 177
            aload 2 /* sessionInfo */
            invokevirtual org.apache.cassandra.streaming.SessionInfo.getTotalSizeToReceive:()J
            invokestatic org.apache.cassandra.utils.FBUtilities.prettyPrintMemory:(J)Ljava/lang/String;
            aastore
            dup
            iconst_4
         6: .line 178
            aload 2 /* sessionInfo */
            invokevirtual org.apache.cassandra.streaming.SessionInfo.getTotalFilesToSend:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_5
         7: .line 179
            aload 2 /* sessionInfo */
            invokevirtual org.apache.cassandra.streaming.SessionInfo.getTotalSizeToSend:()J
            invokestatic org.apache.cassandra.utils.FBUtilities.prettyPrintMemory:(J)Ljava/lang/String;
            aastore
         8: .line 173
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;[Ljava/lang/Object;)V
         9: .line 180
            new org.apache.cassandra.streaming.StreamEvent$SessionPreparedEvent
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            aload 2 /* sessionInfo */
            invokespecial org.apache.cassandra.streaming.StreamEvent$SessionPreparedEvent.<init>:(Ljava/util/UUID;Lorg/apache/cassandra/streaming/SessionInfo;)V
            astore 3 /* event */
        start local 3 // org.apache.cassandra.streaming.StreamEvent$SessionPreparedEvent event
        10: .line 181
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
            aload 2 /* sessionInfo */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.addSessionInfo:(Lorg/apache/cassandra/streaming/SessionInfo;)V
        11: .line 182
            aload 0 /* this */
            aload 3 /* event */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.fireStreamEvent:(Lorg/apache/cassandra/streaming/StreamEvent;)V
        12: .line 183
            return
        end local 3 // org.apache.cassandra.streaming.StreamEvent$SessionPreparedEvent event
        end local 2 // org.apache.cassandra.streaming.SessionInfo sessionInfo
        end local 1 // org.apache.cassandra.streaming.StreamSession session
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0   13     1      session  Lorg/apache/cassandra/streaming/StreamSession;
            1   13     2  sessionInfo  Lorg/apache/cassandra/streaming/SessionInfo;
           10   13     3        event  Lorg/apache/cassandra/streaming/StreamEvent$SessionPreparedEvent;
    MethodParameters:
         Name  Flags
      session  

  void handleSessionComplete(org.apache.cassandra.streaming.StreamSession);
    descriptor: (Lorg/apache/cassandra/streaming/StreamSession;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // org.apache.cassandra.streaming.StreamSession session
         0: .line 187
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{}] Session with {} is complete"
            aload 1 /* session */
            invokevirtual org.apache.cassandra.streaming.StreamSession.planId:()Ljava/util/UUID;
            aload 1 /* session */
            getfield org.apache.cassandra.streaming.StreamSession.peer:Ljava/net/InetAddress;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 188
            aload 0 /* this */
            new org.apache.cassandra.streaming.StreamEvent$SessionCompleteEvent
            dup
            aload 1 /* session */
            invokespecial org.apache.cassandra.streaming.StreamEvent$SessionCompleteEvent.<init>:(Lorg/apache/cassandra/streaming/StreamSession;)V
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.fireStreamEvent:(Lorg/apache/cassandra/streaming/StreamEvent;)V
         2: .line 189
            aload 1 /* session */
            invokevirtual org.apache.cassandra.streaming.StreamSession.getSessionInfo:()Lorg/apache/cassandra/streaming/SessionInfo;
            astore 2 /* sessionInfo */
        start local 2 // org.apache.cassandra.streaming.SessionInfo sessionInfo
         3: .line 190
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
            aload 2 /* sessionInfo */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.addSessionInfo:(Lorg/apache/cassandra/streaming/SessionInfo;)V
         4: .line 191
            aload 0 /* this */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.maybeComplete:()V
         5: .line 192
            return
        end local 2 // org.apache.cassandra.streaming.SessionInfo sessionInfo
        end local 1 // org.apache.cassandra.streaming.StreamSession session
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    6     1      session  Lorg/apache/cassandra/streaming/StreamSession;
            3    6     2  sessionInfo  Lorg/apache/cassandra/streaming/SessionInfo;
    MethodParameters:
         Name  Flags
      session  

  public void handleProgress(org.apache.cassandra.streaming.ProgressInfo);
    descriptor: (Lorg/apache/cassandra/streaming/ProgressInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // org.apache.cassandra.streaming.ProgressInfo progress
         0: .line 196
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
            aload 1 /* progress */
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.updateProgress:(Lorg/apache/cassandra/streaming/ProgressInfo;)V
         1: .line 197
            aload 0 /* this */
            new org.apache.cassandra.streaming.StreamEvent$ProgressEvent
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            aload 1 /* progress */
            invokespecial org.apache.cassandra.streaming.StreamEvent$ProgressEvent.<init>:(Ljava/util/UUID;Lorg/apache/cassandra/streaming/ProgressInfo;)V
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.fireStreamEvent:(Lorg/apache/cassandra/streaming/StreamEvent;)V
         2: .line 198
            return
        end local 1 // org.apache.cassandra.streaming.ProgressInfo progress
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    3     1  progress  Lorg/apache/cassandra/streaming/ProgressInfo;
    MethodParameters:
          Name  Flags
      progress  

  synchronized void fireStreamEvent(org.apache.cassandra.streaming.StreamEvent);
    descriptor: (Lorg/apache/cassandra/streaming/StreamEvent;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
        start local 1 // org.apache.cassandra.streaming.StreamEvent event
         0: .line 203
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.eventListeners:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.apache.cassandra.streaming.StreamResultFuture org.apache.cassandra.streaming.StreamEvent top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.streaming.StreamEventHandler
            astore 2 /* listener */
        start local 2 // org.apache.cassandra.streaming.StreamEventHandler listener
         2: .line 204
            aload 2 /* listener */
            aload 1 /* event */
            invokeinterface org.apache.cassandra.streaming.StreamEventHandler.handleStreamEvent:(Lorg/apache/cassandra/streaming/StreamEvent;)V
        end local 2 // org.apache.cassandra.streaming.StreamEventHandler listener
         3: .line 203
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 205
            return
        end local 1 // org.apache.cassandra.streaming.StreamEvent event
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            0    5     1     event  Lorg/apache/cassandra/streaming/StreamEvent;
            2    3     2  listener  Lorg/apache/cassandra/streaming/StreamEventHandler;
    MethodParameters:
       Name  Flags
      event  

  private synchronized void maybeComplete();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.apache.cassandra.streaming.StreamResultFuture this
         0: .line 209
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.coordinator:Lorg/apache/cassandra/streaming/StreamCoordinator;
            invokevirtual org.apache.cassandra.streaming.StreamCoordinator.hasActiveSessions:()Z
            ifne 8
         1: .line 211
            aload 0 /* this */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.getCurrentState:()Lorg/apache/cassandra/streaming/StreamState;
            astore 1 /* finalState */
        start local 1 // org.apache.cassandra.streaming.StreamState finalState
         2: .line 212
            aload 1 /* finalState */
            invokevirtual org.apache.cassandra.streaming.StreamState.hasFailedSession:()Z
            ifeq 6
         3: .line 214
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{}] Stream failed"
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 215
            aload 0 /* this */
            new org.apache.cassandra.streaming.StreamException
            dup
            aload 1 /* finalState */
            ldc "Stream failed"
            invokespecial org.apache.cassandra.streaming.StreamException.<init>:(Lorg/apache/cassandra/streaming/StreamState;Ljava/lang/String;)V
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.setException:(Ljava/lang/Throwable;)Z
            pop
         5: .line 216
            goto 8
         6: .line 219
      StackMap locals: org.apache.cassandra.streaming.StreamState
      StackMap stack:
            getstatic org.apache.cassandra.streaming.StreamResultFuture.logger:Lorg/slf4j/Logger;
            ldc "[Stream #{}] All sessions completed"
            aload 0 /* this */
            getfield org.apache.cassandra.streaming.StreamResultFuture.planId:Ljava/util/UUID;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         7: .line 220
            aload 0 /* this */
            aload 1 /* finalState */
            invokevirtual org.apache.cassandra.streaming.StreamResultFuture.set:(Ljava/lang/Object;)Z
            pop
        end local 1 // org.apache.cassandra.streaming.StreamState finalState
         8: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.streaming.StreamResultFuture this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/apache/cassandra/streaming/StreamResultFuture;
            2    8     1  finalState  Lorg/apache/cassandra/streaming/StreamState;
}
Signature: Lcom/google/common/util/concurrent/AbstractFuture<Lorg/apache/cassandra/streaming/StreamState;>;
SourceFile: "StreamResultFuture.java"
InnerClasses:
  public ProgressEvent = org.apache.cassandra.streaming.StreamEvent$ProgressEvent of org.apache.cassandra.streaming.StreamEvent
  public SessionCompleteEvent = org.apache.cassandra.streaming.StreamEvent$SessionCompleteEvent of org.apache.cassandra.streaming.StreamEvent
  public SessionPreparedEvent = org.apache.cassandra.streaming.StreamEvent$SessionPreparedEvent of org.apache.cassandra.streaming.StreamEvent