public abstract class io.netty.handler.traffic.AbstractTrafficShapingHandler extends io.netty.channel.ChannelDuplexHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.netty.handler.traffic.AbstractTrafficShapingHandler
  super_class: io.netty.channel.ChannelDuplexHandler
{
  private static final io.netty.util.internal.logging.InternalLogger logger;
    descriptor: Lio/netty/util/internal/logging/InternalLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final long DEFAULT_CHECK_INTERVAL;
    descriptor: J
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1000

  public static final long DEFAULT_MAX_TIME;
    descriptor: J
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 15000

  static final long DEFAULT_MAX_SIZE;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4194304

  static final long MINIMAL_WAIT;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 10

  protected io.netty.handler.traffic.TrafficCounter trafficCounter;
    descriptor: Lio/netty/handler/traffic/TrafficCounter;
    flags: (0x0004) ACC_PROTECTED

  private volatile long writeLimit;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile long readLimit;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  protected volatile long maxTime;
    descriptor: J
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected volatile long checkInterval;
    descriptor: J
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  static final io.netty.util.AttributeKey<java.lang.Boolean> READ_SUSPENDED;
    descriptor: Lio/netty/util/AttributeKey;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Lio/netty/util/AttributeKey<Ljava/lang/Boolean;>;

  static final io.netty.util.AttributeKey<java.lang.Runnable> REOPEN_TASK;
    descriptor: Lio/netty/util/AttributeKey;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Lio/netty/util/AttributeKey<Ljava/lang/Runnable;>;

  volatile long maxWriteDelay;
    descriptor: J
    flags: (0x0040) ACC_VOLATILE

  volatile long maxWriteSize;
    descriptor: J
    flags: (0x0040) ACC_VOLATILE

  final int userDefinedWritabilityIndex;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  static final int CHANNEL_DEFAULT_USER_DEFINED_WRITABILITY_INDEX;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int GLOBAL_DEFAULT_USER_DEFINED_WRITABILITY_INDEX;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int GLOBALCHANNEL_DEFAULT_USER_DEFINED_WRITABILITY_INDEX;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 51
            ldc Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
         1: .line 50
            putstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
         2: .line 100
            new java.lang.StringBuilder
            dup
            ldc Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".READ_SUSPENDED"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic io.netty.util.AttributeKey.valueOf:(Ljava/lang/String;)Lio/netty/util/AttributeKey;
         3: .line 99
            putstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.READ_SUSPENDED:Lio/netty/util/AttributeKey;
         4: .line 101
            new java.lang.StringBuilder
            dup
            ldc Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
         5: .line 102
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".REOPEN_TASK"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 101
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic io.netty.util.AttributeKey.valueOf:(Ljava/lang/String;)Lio/netty/util/AttributeKey;
            putstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.REOPEN_TASK:Lio/netty/util/AttributeKey;
         7: .line 132
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void setTrafficCounter(io.netty.handler.traffic.TrafficCounter);
    descriptor: (Lio/netty/handler/traffic/TrafficCounter;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.handler.traffic.TrafficCounter newTrafficCounter
         0: .line 139
            aload 0 /* this */
            aload 1 /* newTrafficCounter */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
         1: .line 140
            return
        end local 1 // io.netty.handler.traffic.TrafficCounter newTrafficCounter
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    2     1  newTrafficCounter  Lio/netty/handler/traffic/TrafficCounter;
    MethodParameters:
                   Name  Flags
      newTrafficCounter  

  protected int userDefinedWritabilityIndex();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 150
            iconst_1
            ireturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  protected void <init>(long, long, long, long);
    descriptor: (JJJJ)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=9, args_size=5
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long writeLimit
        start local 3 // long readLimit
        start local 5 // long checkInterval
        start local 7 // long maxTime
         0: .line 165
            aload 0 /* this */
            invokespecial io.netty.channel.ChannelDuplexHandler.<init>:()V
         1: .line 92
            aload 0 /* this */
            ldc 15000
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxTime:J
         2: .line 97
            aload 0 /* this */
            ldc 1000
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
         3: .line 107
            aload 0 /* this */
            ldc 4000
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteDelay:J
         4: .line 111
            aload 0 /* this */
            ldc 4194304
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteSize:J
         5: .line 166
            lload 7 /* maxTime */
            lconst_0
            lcmp
            ifgt 7
         6: .line 167
            new java.lang.IllegalArgumentException
            dup
            ldc "maxTime must be positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 170
      StackMap locals: io.netty.handler.traffic.AbstractTrafficShapingHandler long long long long
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.userDefinedWritabilityIndex:()I
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.userDefinedWritabilityIndex:I
         8: .line 171
            aload 0 /* this */
            lload 1 /* writeLimit */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.writeLimit:J
         9: .line 172
            aload 0 /* this */
            lload 3 /* readLimit */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.readLimit:J
        10: .line 173
            aload 0 /* this */
            lload 5 /* checkInterval */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
        11: .line 174
            aload 0 /* this */
            lload 7 /* maxTime */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxTime:J
        12: .line 175
            return
        end local 7 // long maxTime
        end local 5 // long checkInterval
        end local 3 // long readLimit
        end local 1 // long writeLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0           this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0   13     1     writeLimit  J
            0   13     3      readLimit  J
            0   13     5  checkInterval  J
            0   13     7        maxTime  J
    MethodParameters:
               Name  Flags
      writeLimit     
      readLimit      
      checkInterval  
      maxTime        

  protected void <init>(long, long, long);
    descriptor: (JJJ)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=7, args_size=4
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long writeLimit
        start local 3 // long readLimit
        start local 5 // long checkInterval
         0: .line 188
            aload 0 /* this */
            lload 1 /* writeLimit */
            lload 3 /* readLimit */
            lload 5 /* checkInterval */
            ldc 15000
            invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJJ)V
         1: .line 189
            return
        end local 5 // long checkInterval
        end local 3 // long readLimit
        end local 1 // long writeLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    2     1     writeLimit  J
            0    2     3      readLimit  J
            0    2     5  checkInterval  J
    MethodParameters:
               Name  Flags
      writeLimit     
      readLimit      
      checkInterval  

  protected void <init>(long, long);
    descriptor: (JJ)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=5, args_size=3
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long writeLimit
        start local 3 // long readLimit
         0: .line 201
            aload 0 /* this */
            lload 1 /* writeLimit */
            lload 3 /* readLimit */
            ldc 1000
            ldc 15000
            invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJJ)V
         1: .line 202
            return
        end local 3 // long readLimit
        end local 1 // long writeLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    2     1  writeLimit  J
            0    2     3   readLimit  J
    MethodParameters:
            Name  Flags
      writeLimit  
      readLimit   

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 209
            aload 0 /* this */
            lconst_0
            lconst_0
            ldc 1000
            ldc 15000
            invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJJ)V
         1: .line 210
            return
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  protected void <init>(long);
    descriptor: (J)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long checkInterval
         0: .line 221
            aload 0 /* this */
            lconst_0
            lconst_0
            lload 1 /* checkInterval */
            ldc 15000
            invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler.<init>:(JJJJ)V
         1: .line 222
            return
        end local 1 // long checkInterval
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    2     1  checkInterval  J
    MethodParameters:
               Name  Flags
      checkInterval  

  public void configure(long, long, long);
    descriptor: (JJJ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long newWriteLimit
        start local 3 // long newReadLimit
        start local 5 // long newCheckInterval
         0: .line 238
            aload 0 /* this */
            lload 1 /* newWriteLimit */
            lload 3 /* newReadLimit */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.configure:(JJ)V
         1: .line 239
            aload 0 /* this */
            lload 5 /* newCheckInterval */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.configure:(J)V
         2: .line 240
            return
        end local 5 // long newCheckInterval
        end local 3 // long newReadLimit
        end local 1 // long newWriteLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    3     1     newWriteLimit  J
            0    3     3      newReadLimit  J
            0    3     5  newCheckInterval  J
    MethodParameters:
                  Name  Flags
      newWriteLimit     
      newReadLimit      
      newCheckInterval  

  public void configure(long, long);
    descriptor: (JJ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long newWriteLimit
        start local 3 // long newReadLimit
         0: .line 254
            aload 0 /* this */
            lload 1 /* newWriteLimit */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.writeLimit:J
         1: .line 255
            aload 0 /* this */
            lload 3 /* newReadLimit */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.readLimit:J
         2: .line 256
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            ifnull 4
         3: .line 257
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
            invokevirtual io.netty.handler.traffic.TrafficCounter.resetAccounting:(J)V
         4: .line 259
      StackMap locals:
      StackMap stack:
            return
        end local 3 // long newReadLimit
        end local 1 // long newWriteLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    5     1  newWriteLimit  J
            0    5     3   newReadLimit  J
    MethodParameters:
               Name  Flags
      newWriteLimit  
      newReadLimit   

  public void configure(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long newCheckInterval
         0: .line 267
            aload 0 /* this */
            lload 1 /* newCheckInterval */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
         1: .line 268
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            ifnull 3
         2: .line 269
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
            invokevirtual io.netty.handler.traffic.TrafficCounter.configure:(J)V
         3: .line 271
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long newCheckInterval
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1  newCheckInterval  J
    MethodParameters:
                  Name  Flags
      newCheckInterval  

  public long getWriteLimit();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 277
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.writeLimit:J
            lreturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public void setWriteLimit(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long writeLimit
         0: .line 290
            aload 0 /* this */
            lload 1 /* writeLimit */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.writeLimit:J
         1: .line 291
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            ifnull 3
         2: .line 292
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
            invokevirtual io.netty.handler.traffic.TrafficCounter.resetAccounting:(J)V
         3: .line 294
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long writeLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1  writeLimit  J
    MethodParameters:
            Name  Flags
      writeLimit  

  public long getReadLimit();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 300
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.readLimit:J
            lreturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public void setReadLimit(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long readLimit
         0: .line 313
            aload 0 /* this */
            lload 1 /* readLimit */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.readLimit:J
         1: .line 314
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            ifnull 3
         2: .line 315
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
            invokevirtual io.netty.handler.traffic.TrafficCounter.resetAccounting:(J)V
         3: .line 317
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long readLimit
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1  readLimit  J
    MethodParameters:
           Name  Flags
      readLimit  

  public long getCheckInterval();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 323
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
            lreturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public void setCheckInterval(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long checkInterval
         0: .line 330
            aload 0 /* this */
            lload 1 /* checkInterval */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
         1: .line 331
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            ifnull 3
         2: .line 332
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            lload 1 /* checkInterval */
            invokevirtual io.netty.handler.traffic.TrafficCounter.configure:(J)V
         3: .line 334
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long checkInterval
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1  checkInterval  J
    MethodParameters:
               Name  Flags
      checkInterval  

  public void setMaxTimeWait(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long maxTime
         0: .line 348
            lload 1 /* maxTime */
            lconst_0
            lcmp
            ifgt 2
         1: .line 349
            new java.lang.IllegalArgumentException
            dup
            ldc "maxTime must be positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 351
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* maxTime */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxTime:J
         3: .line 352
            return
        end local 1 // long maxTime
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1  maxTime  J
    MethodParameters:
         Name  Flags
      maxTime  

  public long getMaxTimeWait();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 358
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxTime:J
            lreturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public long getMaxWriteDelay();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 365
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteDelay:J
            lreturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public void setMaxWriteDelay(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long maxWriteDelay
         0: .line 379
            lload 1 /* maxWriteDelay */
            lconst_0
            lcmp
            ifgt 2
         1: .line 380
            new java.lang.IllegalArgumentException
            dup
            ldc "maxWriteDelay must be positive"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 1 /* maxWriteDelay */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteDelay:J
         3: .line 383
            return
        end local 1 // long maxWriteDelay
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1  maxWriteDelay  J
    MethodParameters:
               Name  Flags
      maxWriteDelay  

  public long getMaxWriteSize();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 389
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteSize:J
            lreturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public void setMaxWriteSize(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // long maxWriteSize
         0: .line 405
            aload 0 /* this */
            lload 1 /* maxWriteSize */
            putfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteSize:J
         1: .line 406
            return
        end local 1 // long maxWriteSize
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    2     1  maxWriteSize  J
    MethodParameters:
              Name  Flags
      maxWriteSize  

  protected void doAccounting(io.netty.handler.traffic.TrafficCounter);
    descriptor: (Lio/netty/handler/traffic/TrafficCounter;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.handler.traffic.TrafficCounter counter
         0: .line 417
            return
        end local 1 // io.netty.handler.traffic.TrafficCounter counter
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    1     1  counter  Lio/netty/handler/traffic/TrafficCounter;
    MethodParameters:
         Name  Flags
      counter  

  void releaseReadSuspended(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 466
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            astore 2 /* channel */
        start local 2 // io.netty.channel.Channel channel
         1: .line 467
            aload 2 /* channel */
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.READ_SUSPENDED:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface io.netty.util.Attribute.set:(Ljava/lang/Object;)V
         2: .line 468
            aload 2 /* channel */
            invokeinterface io.netty.channel.Channel.config:()Lio/netty/channel/ChannelConfig;
            iconst_1
            invokeinterface io.netty.channel.ChannelConfig.setAutoRead:(Z)Lio/netty/channel/ChannelConfig;
            pop
         3: .line 469
            return
        end local 2 // io.netty.channel.Channel channel
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            1    4     2  channel  Lio/netty/channel/Channel;
    MethodParameters:
      Name  Flags
      ctx   

  public void channelRead(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=13, args_size=3
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object msg
         0: .line 473
            aload 0 /* this */
            aload 2 /* msg */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
            lstore 3 /* size */
        start local 3 // long size
         1: .line 474
            invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
            lstore 5 /* now */
        start local 5 // long now
         2: .line 475
            lload 3 /* size */
            lconst_0
            lcmp
            ifle 25
         3: .line 477
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            lload 3 /* size */
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.readLimit:J
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxTime:J
            lload 5 /* now */
            invokevirtual io.netty.handler.traffic.TrafficCounter.readTimeToWait:(JJJJ)J
            lstore 7 /* wait */
        start local 7 // long wait
         4: .line 478
            aload 0 /* this */
            aload 1 /* ctx */
            lload 7 /* wait */
            lload 5 /* now */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.checkWaitReadTime:(Lio/netty/channel/ChannelHandlerContext;JJ)J
            lstore 7 /* wait */
         5: .line 479
            lload 7 /* wait */
            ldc 10
            lcmp
            iflt 25
         6: .line 482
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            astore 9 /* channel */
        start local 9 // io.netty.channel.Channel channel
         7: .line 483
            aload 9 /* channel */
            invokeinterface io.netty.channel.Channel.config:()Lio/netty/channel/ChannelConfig;
            astore 10 /* config */
        start local 10 // io.netty.channel.ChannelConfig config
         8: .line 484
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 12
         9: .line 485
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            new java.lang.StringBuilder
            dup
            ldc "Read suspend: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 7 /* wait */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 10 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
        10: .line 486
            aload 1 /* ctx */
            invokestatic io.netty.handler.traffic.AbstractTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 485
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
        12: .line 488
      StackMap locals: io.netty.handler.traffic.AbstractTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long long io.netty.channel.Channel io.netty.channel.ChannelConfig
      StackMap stack:
            aload 10 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            ifeq 25
            aload 1 /* ctx */
            invokestatic io.netty.handler.traffic.AbstractTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
            ifeq 25
        13: .line 489
            aload 10 /* config */
            iconst_0
            invokeinterface io.netty.channel.ChannelConfig.setAutoRead:(Z)Lio/netty/channel/ChannelConfig;
            pop
        14: .line 490
            aload 9 /* channel */
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.READ_SUSPENDED:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface io.netty.util.Attribute.set:(Ljava/lang/Object;)V
        15: .line 493
            aload 9 /* channel */
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.REOPEN_TASK:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            astore 11 /* attr */
        start local 11 // io.netty.util.Attribute attr
        16: .line 494
            aload 11 /* attr */
            invokeinterface io.netty.util.Attribute.get:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 12 /* reopenTask */
        start local 12 // java.lang.Runnable reopenTask
        17: .line 495
            aload 12 /* reopenTask */
            ifnonnull 20
        18: .line 496
            new io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask
            dup
            aload 1 /* ctx */
            invokespecial io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask.<init>:(Lio/netty/channel/ChannelHandlerContext;)V
            astore 12 /* reopenTask */
        19: .line 497
            aload 11 /* attr */
            aload 12 /* reopenTask */
            invokeinterface io.netty.util.Attribute.set:(Ljava/lang/Object;)V
        20: .line 499
      StackMap locals: io.netty.util.Attribute java.lang.Runnable
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.executor:()Lio/netty/util/concurrent/EventExecutor;
            aload 12 /* reopenTask */
            lload 7 /* wait */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface io.netty.util.concurrent.EventExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lio/netty/util/concurrent/ScheduledFuture;
            pop
        21: .line 500
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 25
        22: .line 501
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            new java.lang.StringBuilder
            dup
            ldc "Suspend final status => "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* config */
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
        23: .line 502
            aload 1 /* ctx */
            invokestatic io.netty.handler.traffic.AbstractTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            ldc " will reopened at: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 7 /* wait */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 501
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
        end local 12 // java.lang.Runnable reopenTask
        end local 11 // io.netty.util.Attribute attr
        end local 10 // io.netty.channel.ChannelConfig config
        end local 9 // io.netty.channel.Channel channel
        end local 7 // long wait
        25: .line 507
      StackMap locals: io.netty.handler.traffic.AbstractTrafficShapingHandler io.netty.channel.ChannelHandlerContext java.lang.Object long long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            lload 5 /* now */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.informReadOperation:(Lio/netty/channel/ChannelHandlerContext;J)V
        26: .line 508
            aload 1 /* ctx */
            aload 2 /* msg */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
        27: .line 509
            return
        end local 5 // long now
        end local 3 // long size
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   28     0        this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0   28     1         ctx  Lio/netty/channel/ChannelHandlerContext;
            0   28     2         msg  Ljava/lang/Object;
            1   28     3        size  J
            2   28     5         now  J
            4   25     7        wait  J
            7   25     9     channel  Lio/netty/channel/Channel;
            8   25    10      config  Lio/netty/channel/ChannelConfig;
           16   25    11        attr  Lio/netty/util/Attribute<Ljava/lang/Runnable;>;
           17   25    12  reopenTask  Ljava/lang/Runnable;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   final
      msg   final

  long checkWaitReadTime(io.netty.channel.ChannelHandlerContext, long, long);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;JJ)J
    flags: (0x0000) 
    Code:
      stack=2, locals=6, args_size=4
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // long wait
        start local 4 // long now
         0: .line 519
            lload 2 /* wait */
            lreturn
        end local 4 // long now
        end local 2 // long wait
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    1     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            0    1     2  wait  J
            0    1     4   now  J
    MethodParameters:
      Name  Flags
      ctx   final
      wait  
      now   final

  void informReadOperation(io.netty.channel.ChannelHandlerContext, long);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;J)V
    flags: (0x0000) 
    Code:
      stack=0, locals=4, args_size=3
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // long now
         0: .line 528
            return
        end local 2 // long now
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    1     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            0    1     2   now  J
    MethodParameters:
      Name  Flags
      ctx   final
      now   final

  protected static boolean isHandlerActive(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 531
            aload 0 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.READ_SUSPENDED:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            invokeinterface io.netty.util.Attribute.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            astore 1 /* suspended */
        start local 1 // java.lang.Boolean suspended
         1: .line 532
            aload 1 /* suspended */
            ifnull 2
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            aload 1 /* suspended */
            invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
            ifne 2
            iconst_0
            ireturn
      StackMap locals: java.lang.Boolean
      StackMap stack:
         2: iconst_1
            ireturn
        end local 1 // java.lang.Boolean suspended
        end local 0 // io.netty.channel.ChannelHandlerContext ctx
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0        ctx  Lio/netty/channel/ChannelHandlerContext;
            1    3     1  suspended  Ljava/lang/Boolean;
    MethodParameters:
      Name  Flags
      ctx   

  public void read(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 537
            aload 1 /* ctx */
            invokestatic io.netty.handler.traffic.AbstractTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
            ifeq 2
         1: .line 539
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.read:()Lio/netty/channel/ChannelHandlerContext;
            pop
         2: .line 541
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    3     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    MethodParameters:
      Name  Flags
      ctx   

  public void write(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=10, args_size=4
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object msg
        start local 3 // io.netty.channel.ChannelPromise promise
         0: .line 546
            aload 0 /* this */
            aload 2 /* msg */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
            lstore 4 /* size */
        start local 4 // long size
         1: .line 547
            invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
            lstore 6 /* now */
        start local 6 // long now
         2: .line 548
            lload 4 /* size */
            lconst_0
            lcmp
            ifle 11
         3: .line 550
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            lload 4 /* size */
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.writeLimit:J
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxTime:J
            lload 6 /* now */
            invokevirtual io.netty.handler.traffic.TrafficCounter.writeTimeToWait:(JJJJ)J
            lstore 8 /* wait */
        start local 8 // long wait
         4: .line 551
            lload 8 /* wait */
            ldc 10
            lcmp
            iflt 11
         5: .line 552
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 9
         6: .line 553
            getstatic io.netty.handler.traffic.AbstractTrafficShapingHandler.logger:Lio/netty/util/internal/logging/InternalLogger;
            new java.lang.StringBuilder
            dup
            ldc "Write suspend: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 8 /* wait */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.config:()Lio/netty/channel/ChannelConfig;
            invokeinterface io.netty.channel.ChannelConfig.isAutoRead:()Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         7: .line 554
            aload 1 /* ctx */
            invokestatic io.netty.handler.traffic.AbstractTrafficShapingHandler.isHandlerActive:(Lio/netty/channel/ChannelHandlerContext;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 553
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;)V
         9: .line 556
      StackMap locals: long long long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* msg */
            lload 4 /* size */
            lload 8 /* wait */
            lload 6 /* now */
            aload 3 /* promise */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.submitWrite:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
        10: .line 557
            return
        end local 8 // long wait
        11: .line 561
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* msg */
            lload 4 /* size */
            lconst_0
            lload 6 /* now */
            aload 3 /* promise */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.submitWrite:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
        12: .line 562
            return
        end local 6 // long now
        end local 4 // long size
        end local 3 // io.netty.channel.ChannelPromise promise
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0   13     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0   13     2      msg  Ljava/lang/Object;
            0   13     3  promise  Lio/netty/channel/ChannelPromise;
            1   13     4     size  J
            2   13     6      now  J
            4   11     8     wait  J
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      ctx      final
      msg      final
      promise  final

  protected void submitWrite(io.netty.channel.ChannelHandlerContext, java.lang.Object, long, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JLio/netty/channel/ChannelPromise;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=10, locals=6, args_size=5
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object msg
        start local 3 // long delay
        start local 5 // io.netty.channel.ChannelPromise promise
         0: .line 567
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* msg */
            aload 0 /* this */
            aload 2 /* msg */
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.calculateSize:(Ljava/lang/Object;)J
         1: .line 568
            lload 3 /* delay */
            invokestatic io.netty.handler.traffic.TrafficCounter.milliSecondFromNano:()J
            aload 5 /* promise */
         2: .line 567
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.submitWrite:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
         3: .line 569
            return
        end local 5 // io.netty.channel.ChannelPromise promise
        end local 3 // long delay
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0    4     2      msg  Ljava/lang/Object;
            0    4     3    delay  J
            0    4     5  promise  Lio/netty/channel/ChannelPromise;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      ctx      final
      msg      final
      delay    final
      promise  final

  abstract void submitWrite(io.netty.channel.ChannelHandlerContext, java.lang.Object, long, long, long, io.netty.channel.ChannelPromise);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;JJJLio/netty/channel/ChannelPromise;)V
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      ctx      
      msg      
      size     
      delay    
      now      
      promise  

  public void channelRegistered(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 576
            aload 0 /* this */
            aload 1 /* ctx */
            iconst_1
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.setUserDefinedWritability:(Lio/netty/channel/ChannelHandlerContext;Z)V
         1: .line 577
            aload 0 /* this */
            aload 1 /* ctx */
            invokespecial io.netty.channel.ChannelDuplexHandler.channelRegistered:(Lio/netty/channel/ChannelHandlerContext;)V
         2: .line 578
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    3     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  void setUserDefinedWritability(io.netty.channel.ChannelHandlerContext, boolean);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // boolean writable
         0: .line 581
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.unsafe:()Lio/netty/channel/Channel$Unsafe;
            invokeinterface io.netty.channel.Channel$Unsafe.outboundBuffer:()Lio/netty/channel/ChannelOutboundBuffer;
            astore 3 /* cob */
        start local 3 // io.netty.channel.ChannelOutboundBuffer cob
         1: .line 582
            aload 3 /* cob */
            ifnull 3
         2: .line 583
            aload 3 /* cob */
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.userDefinedWritabilityIndex:I
            iload 2 /* writable */
            invokevirtual io.netty.channel.ChannelOutboundBuffer.setUserDefinedWritability:(IZ)V
         3: .line 585
      StackMap locals: io.netty.channel.ChannelOutboundBuffer
      StackMap stack:
            return
        end local 3 // io.netty.channel.ChannelOutboundBuffer cob
        end local 2 // boolean writable
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    4     1       ctx  Lio/netty/channel/ChannelHandlerContext;
            0    4     2  writable  Z
            1    4     3       cob  Lio/netty/channel/ChannelOutboundBuffer;
    MethodParameters:
          Name  Flags
      ctx       
      writable  

  void checkWriteSuspend(io.netty.channel.ChannelHandlerContext, long, long);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;JJ)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // long delay
        start local 4 // long queueSize
         0: .line 594
            lload 4 /* queueSize */
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteSize:J
            lcmp
            ifgt 1
            lload 2 /* delay */
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteDelay:J
            lcmp
            ifle 2
         1: .line 595
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            iconst_0
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.setUserDefinedWritability:(Lio/netty/channel/ChannelHandlerContext;Z)V
         2: .line 597
      StackMap locals:
      StackMap stack:
            return
        end local 4 // long queueSize
        end local 2 // long delay
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    3     1        ctx  Lio/netty/channel/ChannelHandlerContext;
            0    3     2      delay  J
            0    3     4  queueSize  J
    MethodParameters:
           Name  Flags
      ctx        
      delay      
      queueSize  

  void releaseWriteSuspended(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 602
            aload 0 /* this */
            aload 1 /* ctx */
            iconst_1
            invokevirtual io.netty.handler.traffic.AbstractTrafficShapingHandler.setUserDefinedWritability:(Lio/netty/channel/ChannelHandlerContext;Z)V
         1: .line 603
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    MethodParameters:
      Name  Flags
      ctx   

  public io.netty.handler.traffic.TrafficCounter trafficCounter();
    descriptor: ()Lio/netty/handler/traffic/TrafficCounter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 610
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            areturn
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
         0: .line 615
            new java.lang.StringBuilder
            dup
            sipush 290
            invokespecial java.lang.StringBuilder.<init>:(I)V
         1: .line 616
            ldc "TrafficShaping with Write Limit: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.writeLimit:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         2: .line 617
            ldc " Read Limit: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.readLimit:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         3: .line 618
            ldc " CheckInterval: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.checkInterval:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         4: .line 619
            ldc " maxDelay: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteDelay:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         5: .line 620
            ldc " maxSize: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.maxWriteSize:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         6: .line 621
            ldc " and Counter: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 615
            astore 1 /* builder */
        start local 1 // java.lang.StringBuilder builder
         8: .line 622
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            ifnull 11
         9: .line 623
            aload 1 /* builder */
            aload 0 /* this */
            getfield io.netty.handler.traffic.AbstractTrafficShapingHandler.trafficCounter:Lio/netty/handler/traffic/TrafficCounter;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        10: .line 624
            goto 12
        11: .line 625
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 1 /* builder */
            ldc "none"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 627
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder builder
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            8   13     1  builder  Ljava/lang/StringBuilder;

  protected long calculateSize(java.lang.Object);
    descriptor: (Ljava/lang/Object;)J
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
        start local 1 // java.lang.Object msg
         0: .line 638
            aload 1 /* msg */
            instanceof io.netty.buffer.ByteBuf
            ifeq 2
         1: .line 639
            aload 1 /* msg */
            checkcast io.netty.buffer.ByteBuf
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            i2l
            lreturn
         2: .line 641
      StackMap locals:
      StackMap stack:
            aload 1 /* msg */
            instanceof io.netty.buffer.ByteBufHolder
            ifeq 4
         3: .line 642
            aload 1 /* msg */
            checkcast io.netty.buffer.ByteBufHolder
            invokeinterface io.netty.buffer.ByteBufHolder.content:()Lio/netty/buffer/ByteBuf;
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            i2l
            lreturn
         4: .line 644
      StackMap locals:
      StackMap stack:
            ldc -1
            lreturn
        end local 1 // java.lang.Object msg
        end local 0 // io.netty.handler.traffic.AbstractTrafficShapingHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/netty/handler/traffic/AbstractTrafficShapingHandler;
            0    5     1   msg  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      msg   
}
SourceFile: "AbstractTrafficShapingHandler.java"
NestMembers:
  io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask
InnerClasses:
  public abstract Unsafe = io.netty.channel.Channel$Unsafe of io.netty.channel.Channel
  final ReopenReadTimerTask = io.netty.handler.traffic.AbstractTrafficShapingHandler$ReopenReadTimerTask of io.netty.handler.traffic.AbstractTrafficShapingHandler