public class org.apache.cassandra.utils.NoSpamLogger
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.NoSpamLogger
  super_class: java.lang.Object
{
  static org.apache.cassandra.utils.NoSpamLogger$Clock CLOCK;
    descriptor: Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
    flags: (0x0008) ACC_STATIC
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  private static final org.cliffc.high_scale_lib.NonBlockingHashMap<org.slf4j.Logger, org.apache.cassandra.utils.NoSpamLogger> wrappedLoggers;
    descriptor: Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/cliffc/high_scale_lib/NonBlockingHashMap<Lorg/slf4j/Logger;Lorg/apache/cassandra/utils/NoSpamLogger;>;

  private final org.slf4j.Logger wrapped;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long minIntervalNanos;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.cliffc.high_scale_lib.NonBlockingHashMap<java.lang.String, org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement> lastMessage;
    descriptor: Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/cliffc/high_scale_lib/NonBlockingHashMap<Ljava/lang/String;Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 57
            new org.apache.cassandra.utils.NoSpamLogger$1
            dup
            invokespecial org.apache.cassandra.utils.NoSpamLogger$1.<init>:()V
            putstatic org.apache.cassandra.utils.NoSpamLogger.CLOCK:Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
         1: .line 136
            new org.cliffc.high_scale_lib.NonBlockingHashMap
            dup
            invokespecial org.cliffc.high_scale_lib.NonBlockingHashMap.<init>:()V
            putstatic org.apache.cassandra.utils.NoSpamLogger.wrappedLoggers:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void clearWrappedLoggersForTest();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 141
            getstatic org.apache.cassandra.utils.NoSpamLogger.wrappedLoggers:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
            invokevirtual org.cliffc.high_scale_lib.NonBlockingHashMap.clear:()V
         1: .line 142
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  public static org.apache.cassandra.utils.NoSpamLogger getLogger(org.slf4j.Logger, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/slf4j/Logger;JLjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/utils/NoSpamLogger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // org.slf4j.Logger logger
        start local 1 // long minInterval
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 146
            getstatic org.apache.cassandra.utils.NoSpamLogger.wrappedLoggers:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
            aload 0 /* logger */
            invokevirtual org.cliffc.high_scale_lib.NonBlockingHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.NoSpamLogger
            astore 4 /* wrapped */
        start local 4 // org.apache.cassandra.utils.NoSpamLogger wrapped
         1: .line 147
            aload 4 /* wrapped */
            ifnonnull 6
         2: .line 149
            new org.apache.cassandra.utils.NoSpamLogger
            dup
            aload 0 /* logger */
            lload 1 /* minInterval */
            aload 3 /* unit */
            invokespecial org.apache.cassandra.utils.NoSpamLogger.<init>:(Lorg/slf4j/Logger;JLjava/util/concurrent/TimeUnit;)V
            astore 4 /* wrapped */
         3: .line 150
            getstatic org.apache.cassandra.utils.NoSpamLogger.wrappedLoggers:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
            aload 0 /* logger */
            aload 4 /* wrapped */
            invokevirtual org.cliffc.high_scale_lib.NonBlockingHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.NoSpamLogger
            astore 5 /* temp */
        start local 5 // org.apache.cassandra.utils.NoSpamLogger temp
         4: .line 151
            aload 5 /* temp */
            ifnull 6
         5: .line 152
            aload 5 /* temp */
            astore 4 /* wrapped */
        end local 5 // org.apache.cassandra.utils.NoSpamLogger temp
         6: .line 154
      StackMap locals: org.apache.cassandra.utils.NoSpamLogger
      StackMap stack:
            aload 4 /* wrapped */
            areturn
        end local 4 // org.apache.cassandra.utils.NoSpamLogger wrapped
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 1 // long minInterval
        end local 0 // org.slf4j.Logger logger
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0       logger  Lorg/slf4j/Logger;
            0    7     1  minInterval  J
            0    7     3         unit  Ljava/util/concurrent/TimeUnit;
            1    7     4      wrapped  Lorg/apache/cassandra/utils/NoSpamLogger;
            4    6     5         temp  Lorg/apache/cassandra/utils/NoSpamLogger;
    MethodParameters:
             Name  Flags
      logger       
      minInterval  
      unit         

  public static boolean log(org.slf4j.Logger, org.apache.cassandra.utils.NoSpamLogger$Level, long, java.util.concurrent.TimeUnit, java.lang.String, java.lang.Object[]);
    descriptor: (Lorg/slf4j/Logger;Lorg/apache/cassandra/utils/NoSpamLogger$Level;JLjava/util/concurrent/TimeUnit;Ljava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=10, locals=7, args_size=6
        start local 0 // org.slf4j.Logger logger
        start local 1 // org.apache.cassandra.utils.NoSpamLogger$Level level
        start local 2 // long minInterval
        start local 4 // java.util.concurrent.TimeUnit unit
        start local 5 // java.lang.String message
        start local 6 // java.lang.Object[] objects
         0: .line 159
            aload 0 /* logger */
            aload 1 /* level */
            aload 5 /* message */
            lload 2 /* minInterval */
            aload 4 /* unit */
            getstatic org.apache.cassandra.utils.NoSpamLogger.CLOCK:Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
            invokeinterface org.apache.cassandra.utils.NoSpamLogger$Clock.nanoTime:()J
            aload 5 /* message */
            aload 6 /* objects */
            invokestatic org.apache.cassandra.utils.NoSpamLogger.log:(Lorg/slf4j/Logger;Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;JLjava/util/concurrent/TimeUnit;JLjava/lang/String;[Ljava/lang/Object;)Z
            ireturn
        end local 6 // java.lang.Object[] objects
        end local 5 // java.lang.String message
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long minInterval
        end local 1 // org.apache.cassandra.utils.NoSpamLogger$Level level
        end local 0 // org.slf4j.Logger logger
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0       logger  Lorg/slf4j/Logger;
            0    1     1        level  Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            0    1     2  minInterval  J
            0    1     4         unit  Ljava/util/concurrent/TimeUnit;
            0    1     5      message  Ljava/lang/String;
            0    1     6      objects  [Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      logger       
      level        
      minInterval  
      unit         
      message      
      objects      

  public static boolean log(org.slf4j.Logger, org.apache.cassandra.utils.NoSpamLogger$Level, java.lang.String, long, java.util.concurrent.TimeUnit, java.lang.String, java.lang.Object[]);
    descriptor: (Lorg/slf4j/Logger;Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;JLjava/util/concurrent/TimeUnit;Ljava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=10, locals=8, args_size=7
        start local 0 // org.slf4j.Logger logger
        start local 1 // org.apache.cassandra.utils.NoSpamLogger$Level level
        start local 2 // java.lang.String key
        start local 3 // long minInterval
        start local 5 // java.util.concurrent.TimeUnit unit
        start local 6 // java.lang.String message
        start local 7 // java.lang.Object[] objects
         0: .line 164
            aload 0 /* logger */
            aload 1 /* level */
            aload 2 /* key */
            lload 3 /* minInterval */
            aload 5 /* unit */
            getstatic org.apache.cassandra.utils.NoSpamLogger.CLOCK:Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
            invokeinterface org.apache.cassandra.utils.NoSpamLogger$Clock.nanoTime:()J
            aload 6 /* message */
            aload 7 /* objects */
            invokestatic org.apache.cassandra.utils.NoSpamLogger.log:(Lorg/slf4j/Logger;Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;JLjava/util/concurrent/TimeUnit;JLjava/lang/String;[Ljava/lang/Object;)Z
            ireturn
        end local 7 // java.lang.Object[] objects
        end local 6 // java.lang.String message
        end local 5 // java.util.concurrent.TimeUnit unit
        end local 3 // long minInterval
        end local 2 // java.lang.String key
        end local 1 // org.apache.cassandra.utils.NoSpamLogger$Level level
        end local 0 // org.slf4j.Logger logger
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0       logger  Lorg/slf4j/Logger;
            0    1     1        level  Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            0    1     2          key  Ljava/lang/String;
            0    1     3  minInterval  J
            0    1     5         unit  Ljava/util/concurrent/TimeUnit;
            0    1     6      message  Ljava/lang/String;
            0    1     7      objects  [Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      logger       
      level        
      key          
      minInterval  
      unit         
      message      
      objects      

  public static boolean log(org.slf4j.Logger, org.apache.cassandra.utils.NoSpamLogger$Level, java.lang.String, long, java.util.concurrent.TimeUnit, long, java.lang.String, java.lang.Object[]);
    descriptor: (Lorg/slf4j/Logger;Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;JLjava/util/concurrent/TimeUnit;JLjava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=12, args_size=8
        start local 0 // org.slf4j.Logger logger
        start local 1 // org.apache.cassandra.utils.NoSpamLogger$Level level
        start local 2 // java.lang.String key
        start local 3 // long minInterval
        start local 5 // java.util.concurrent.TimeUnit unit
        start local 6 // long nowNanos
        start local 8 // java.lang.String message
        start local 9 // java.lang.Object[] objects
         0: .line 169
            aload 0 /* logger */
            lload 3 /* minInterval */
            aload 5 /* unit */
            invokestatic org.apache.cassandra.utils.NoSpamLogger.getLogger:(Lorg/slf4j/Logger;JLjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/utils/NoSpamLogger;
            astore 10 /* wrapped */
        start local 10 // org.apache.cassandra.utils.NoSpamLogger wrapped
         1: .line 170
            aload 10 /* wrapped */
            aload 2 /* key */
            aload 8 /* message */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            astore 11 /* statement */
        start local 11 // org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement statement
         2: .line 171
            aload 11 /* statement */
            aload 1 /* level */
            lload 6 /* nowNanos */
            aload 9 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement.log:(Lorg/apache/cassandra/utils/NoSpamLogger$Level;J[Ljava/lang/Object;)Z
            ireturn
        end local 11 // org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement statement
        end local 10 // org.apache.cassandra.utils.NoSpamLogger wrapped
        end local 9 // java.lang.Object[] objects
        end local 8 // java.lang.String message
        end local 6 // long nowNanos
        end local 5 // java.util.concurrent.TimeUnit unit
        end local 3 // long minInterval
        end local 2 // java.lang.String key
        end local 1 // org.apache.cassandra.utils.NoSpamLogger$Level level
        end local 0 // org.slf4j.Logger logger
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0       logger  Lorg/slf4j/Logger;
            0    3     1        level  Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            0    3     2          key  Ljava/lang/String;
            0    3     3  minInterval  J
            0    3     5         unit  Ljava/util/concurrent/TimeUnit;
            0    3     6     nowNanos  J
            0    3     8      message  Ljava/lang/String;
            0    3     9      objects  [Ljava/lang/Object;
            1    3    10      wrapped  Lorg/apache/cassandra/utils/NoSpamLogger;
            2    3    11    statement  Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    MethodParameters:
             Name  Flags
      logger       
      level        
      key          
      minInterval  
      unit         
      nowNanos     
      message      
      objects      

  public static org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement getStatement(org.slf4j.Logger, java.lang.String, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/slf4j/Logger;Ljava/lang/String;JLjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.slf4j.Logger logger
        start local 1 // java.lang.String message
        start local 2 // long minInterval
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 176
            aload 0 /* logger */
            lload 2 /* minInterval */
            aload 4 /* unit */
            invokestatic org.apache.cassandra.utils.NoSpamLogger.getLogger:(Lorg/slf4j/Logger;JLjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/utils/NoSpamLogger;
            astore 5 /* wrapped */
        start local 5 // org.apache.cassandra.utils.NoSpamLogger wrapped
         1: .line 177
            aload 5 /* wrapped */
            aload 1 /* message */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            areturn
        end local 5 // org.apache.cassandra.utils.NoSpamLogger wrapped
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long minInterval
        end local 1 // java.lang.String message
        end local 0 // org.slf4j.Logger logger
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0       logger  Lorg/slf4j/Logger;
            0    2     1      message  Ljava/lang/String;
            0    2     2  minInterval  J
            0    2     4         unit  Ljava/util/concurrent/TimeUnit;
            1    2     5      wrapped  Lorg/apache/cassandra/utils/NoSpamLogger;
    MethodParameters:
             Name  Flags
      logger       
      message      
      minInterval  
      unit         

  private void <init>(org.slf4j.Logger, long, java.util.concurrent.TimeUnit);
    descriptor: (Lorg/slf4j/Logger;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // org.slf4j.Logger wrapped
        start local 2 // long minInterval
        start local 4 // java.util.concurrent.TimeUnit timeUnit
         0: .line 184
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 182
            aload 0 /* this */
            new org.cliffc.high_scale_lib.NonBlockingHashMap
            dup
            invokespecial org.cliffc.high_scale_lib.NonBlockingHashMap.<init>:()V
            putfield org.apache.cassandra.utils.NoSpamLogger.lastMessage:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
         2: .line 186
            aload 0 /* this */
            aload 1 /* wrapped */
            putfield org.apache.cassandra.utils.NoSpamLogger.wrapped:Lorg/slf4j/Logger;
         3: .line 187
            aload 0 /* this */
            aload 4 /* timeUnit */
            lload 2 /* minInterval */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            putfield org.apache.cassandra.utils.NoSpamLogger.minIntervalNanos:J
         4: .line 188
            return
        end local 4 // java.util.concurrent.TimeUnit timeUnit
        end local 2 // long minInterval
        end local 1 // org.slf4j.Logger wrapped
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    5     1      wrapped  Lorg/slf4j/Logger;
            0    5     2  minInterval  J
            0    5     4     timeUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
             Name  Flags
      wrapped      
      minInterval  
      timeUnit     

  public boolean info(long, java.lang.String, java.lang.Object[]);
    descriptor: (JLjava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // long nowNanos
        start local 3 // java.lang.String s
        start local 4 // java.lang.Object[] objects
         0: .line 192
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.NoSpamLogger$Level.INFO:Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            aload 3 /* s */
            lload 1 /* nowNanos */
            aload 4 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.log:(Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;J[Ljava/lang/Object;)Z
            ireturn
        end local 4 // java.lang.Object[] objects
        end local 3 // java.lang.String s
        end local 1 // long nowNanos
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1  nowNanos  J
            0    1     3         s  Ljava/lang/String;
            0    1     4   objects  [Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      nowNanos  
      s         
      objects   

  public boolean info(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String s
        start local 2 // java.lang.Object[] objects
         0: .line 197
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.NoSpamLogger.CLOCK:Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
            invokeinterface org.apache.cassandra.utils.NoSpamLogger$Clock.nanoTime:()J
            aload 1 /* s */
            aload 2 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.info:(JLjava/lang/String;[Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.lang.Object[] objects
        end local 1 // java.lang.String s
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1        s  Ljava/lang/String;
            0    1     2  objects  [Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      s        
      objects  

  public boolean warn(long, java.lang.String, java.lang.Object[]);
    descriptor: (JLjava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // long nowNanos
        start local 3 // java.lang.String s
        start local 4 // java.lang.Object[] objects
         0: .line 202
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.NoSpamLogger$Level.WARN:Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            aload 3 /* s */
            lload 1 /* nowNanos */
            aload 4 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.log:(Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;J[Ljava/lang/Object;)Z
            ireturn
        end local 4 // java.lang.Object[] objects
        end local 3 // java.lang.String s
        end local 1 // long nowNanos
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1  nowNanos  J
            0    1     3         s  Ljava/lang/String;
            0    1     4   objects  [Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      nowNanos  
      s         
      objects   

  public boolean warn(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String s
        start local 2 // java.lang.Object[] objects
         0: .line 207
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.NoSpamLogger.CLOCK:Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
            invokeinterface org.apache.cassandra.utils.NoSpamLogger$Clock.nanoTime:()J
            aload 1 /* s */
            aload 2 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.warn:(JLjava/lang/String;[Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.lang.Object[] objects
        end local 1 // java.lang.String s
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1        s  Ljava/lang/String;
            0    1     2  objects  [Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      s        
      objects  

  public boolean error(long, java.lang.String, java.lang.Object[]);
    descriptor: (JLjava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // long nowNanos
        start local 3 // java.lang.String s
        start local 4 // java.lang.Object[] objects
         0: .line 212
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.NoSpamLogger$Level.ERROR:Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            aload 3 /* s */
            lload 1 /* nowNanos */
            aload 4 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.log:(Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;J[Ljava/lang/Object;)Z
            ireturn
        end local 4 // java.lang.Object[] objects
        end local 3 // java.lang.String s
        end local 1 // long nowNanos
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1  nowNanos  J
            0    1     3         s  Ljava/lang/String;
            0    1     4   objects  [Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      nowNanos  
      s         
      objects   

  public boolean error(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String s
        start local 2 // java.lang.Object[] objects
         0: .line 217
            aload 0 /* this */
            getstatic org.apache.cassandra.utils.NoSpamLogger.CLOCK:Lorg/apache/cassandra/utils/NoSpamLogger$Clock;
            invokeinterface org.apache.cassandra.utils.NoSpamLogger$Clock.nanoTime:()J
            aload 1 /* s */
            aload 2 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.error:(JLjava/lang/String;[Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.lang.Object[] objects
        end local 1 // java.lang.String s
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1        s  Ljava/lang/String;
            0    1     2  objects  [Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      s        
      objects  

  public boolean log(org.apache.cassandra.utils.NoSpamLogger$Level, java.lang.String, long, java.lang.Object[]);
    descriptor: (Lorg/apache/cassandra/utils/NoSpamLogger$Level;Ljava/lang/String;J[Ljava/lang/Object;)Z
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // org.apache.cassandra.utils.NoSpamLogger$Level l
        start local 2 // java.lang.String s
        start local 3 // long nowNanos
        start local 5 // java.lang.Object[] objects
         0: .line 222
            aload 0 /* this */
            aload 2 /* s */
            aload 0 /* this */
            getfield org.apache.cassandra.utils.NoSpamLogger.minIntervalNanos:J
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            aload 1 /* l */
            lload 3 /* nowNanos */
            aload 5 /* objects */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement.log:(Lorg/apache/cassandra/utils/NoSpamLogger$Level;J[Ljava/lang/Object;)Z
            ireturn
        end local 5 // java.lang.Object[] objects
        end local 3 // long nowNanos
        end local 2 // java.lang.String s
        end local 1 // org.apache.cassandra.utils.NoSpamLogger$Level l
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1         l  Lorg/apache/cassandra/utils/NoSpamLogger$Level;
            0    1     2         s  Ljava/lang/String;
            0    1     3  nowNanos  J
            0    1     5   objects  [Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      l         
      s         
      nowNanos  
      objects   

  public org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement getStatement(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String s
         0: .line 227
            aload 0 /* this */
            aload 1 /* s */
            aload 0 /* this */
            getfield org.apache.cassandra.utils.NoSpamLogger.minIntervalNanos:J
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            areturn
        end local 1 // java.lang.String s
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  public org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement getStatement(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String key
        start local 2 // java.lang.String s
         0: .line 232
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* s */
            aload 0 /* this */
            getfield org.apache.cassandra.utils.NoSpamLogger.minIntervalNanos:J
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            areturn
        end local 2 // java.lang.String s
        end local 1 // java.lang.String key
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1   key  Ljava/lang/String;
            0    1     2     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   
      s     

  public org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement getStatement(java.lang.String, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/String;JLjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String s
        start local 2 // long minInterval
        start local 4 // java.util.concurrent.TimeUnit unit
         0: .line 237
            aload 0 /* this */
            aload 1 /* s */
            aload 4 /* unit */
            lload 2 /* minInterval */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            areturn
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long minInterval
        end local 1 // java.lang.String s
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1            s  Ljava/lang/String;
            0    1     2  minInterval  J
            0    1     4         unit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
             Name  Flags
      s            
      minInterval  
      unit         

  public org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement getStatement(java.lang.String, long);
    descriptor: (Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String s
        start local 2 // long minIntervalNanos
         0: .line 242
            aload 0 /* this */
            aload 1 /* s */
            aload 1 /* s */
            lload 2 /* minIntervalNanos */
            invokevirtual org.apache.cassandra.utils.NoSpamLogger.getStatement:(Ljava/lang/String;Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            areturn
        end local 2 // long minIntervalNanos
        end local 1 // java.lang.String s
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    1     1                 s  Ljava/lang/String;
            0    1     2  minIntervalNanos  J
    MethodParameters:
                  Name  Flags
      s                 
      minIntervalNanos  

  public org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement getStatement(java.lang.String, java.lang.String, long);
    descriptor: (Ljava/lang/String;Ljava/lang/String;J)Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.apache.cassandra.utils.NoSpamLogger this
        start local 1 // java.lang.String key
        start local 2 // java.lang.String s
        start local 3 // long minIntervalNanos
         0: .line 247
            aload 0 /* this */
            getfield org.apache.cassandra.utils.NoSpamLogger.lastMessage:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
            aload 1 /* key */
            invokevirtual org.cliffc.high_scale_lib.NonBlockingHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement
            astore 5 /* statement */
        start local 5 // org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement statement
         1: .line 248
            aload 5 /* statement */
            ifnonnull 6
         2: .line 250
            new org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement
            dup
            aload 0 /* this */
            aload 2 /* s */
            lload 3 /* minIntervalNanos */
            invokespecial org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement.<init>:(Lorg/apache/cassandra/utils/NoSpamLogger;Ljava/lang/String;J)V
            astore 5 /* statement */
         3: .line 251
            aload 0 /* this */
            getfield org.apache.cassandra.utils.NoSpamLogger.lastMessage:Lorg/cliffc/high_scale_lib/NonBlockingHashMap;
            aload 1 /* key */
            aload 5 /* statement */
            invokevirtual org.cliffc.high_scale_lib.NonBlockingHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement
            astore 6 /* temp */
        start local 6 // org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement temp
         4: .line 252
            aload 6 /* temp */
            ifnull 6
         5: .line 253
            aload 6 /* temp */
            astore 5 /* statement */
        end local 6 // org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement temp
         6: .line 255
      StackMap locals: org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement
      StackMap stack:
            aload 5 /* statement */
            areturn
        end local 5 // org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement statement
        end local 3 // long minIntervalNanos
        end local 2 // java.lang.String s
        end local 1 // java.lang.String key
        end local 0 // org.apache.cassandra.utils.NoSpamLogger this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lorg/apache/cassandra/utils/NoSpamLogger;
            0    7     1               key  Ljava/lang/String;
            0    7     2                 s  Ljava/lang/String;
            0    7     3  minIntervalNanos  J
            1    7     5         statement  Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
            4    6     6              temp  Lorg/apache/cassandra/utils/NoSpamLogger$NoSpamLogStatement;
    MethodParameters:
                  Name  Flags
      key               
      s                 
      minIntervalNanos  
}
SourceFile: "NoSpamLogger.java"
NestMembers:
  org.apache.cassandra.utils.NoSpamLogger$1  org.apache.cassandra.utils.NoSpamLogger$Clock  org.apache.cassandra.utils.NoSpamLogger$Level  org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement
InnerClasses:
  org.apache.cassandra.utils.NoSpamLogger$1
  abstract Clock = org.apache.cassandra.utils.NoSpamLogger$Clock of org.apache.cassandra.utils.NoSpamLogger
  public final Level = org.apache.cassandra.utils.NoSpamLogger$Level of org.apache.cassandra.utils.NoSpamLogger
  public NoSpamLogStatement = org.apache.cassandra.utils.NoSpamLogger$NoSpamLogStatement of org.apache.cassandra.utils.NoSpamLogger