public class com.sun.jmx.snmp.ThreadContext implements java.lang.Cloneable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.jmx.snmp.ThreadContext
  super_class: java.lang.Object
{
  private com.sun.jmx.snmp.ThreadContext previous;
    descriptor: Lcom/sun/jmx/snmp/ThreadContext;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String key;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Object value;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private static java.lang.ThreadLocal<com.sun.jmx.snmp.ThreadContext> localContext;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/lang/ThreadLocal<Lcom/sun/jmx/snmp/ThreadContext;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 325
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
         1: .line 324
            putstatic com.sun.jmx.snmp.ThreadContext.localContext:Ljava/lang/ThreadLocal;
         2: .line 325
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.sun.jmx.snmp.ThreadContext, java.lang.String, java.lang.Object);
    descriptor: (Lcom/sun/jmx/snmp/ThreadContext;Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.sun.jmx.snmp.ThreadContext this
        start local 1 // com.sun.jmx.snmp.ThreadContext previous
        start local 2 // java.lang.String key
        start local 3 // java.lang.Object value
         0: .line 103
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 104
            aload 0 /* this */
            aload 1 /* previous */
            putfield com.sun.jmx.snmp.ThreadContext.previous:Lcom/sun/jmx/snmp/ThreadContext;
         2: .line 105
            aload 0 /* this */
            aload 2 /* key */
            putfield com.sun.jmx.snmp.ThreadContext.key:Ljava/lang/String;
         3: .line 106
            aload 0 /* this */
            aload 3 /* value */
            putfield com.sun.jmx.snmp.ThreadContext.value:Ljava/lang/Object;
         4: .line 107
            return
        end local 3 // java.lang.Object value
        end local 2 // java.lang.String key
        end local 1 // com.sun.jmx.snmp.ThreadContext previous
        end local 0 // com.sun.jmx.snmp.ThreadContext this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/sun/jmx/snmp/ThreadContext;
            0    5     1  previous  Lcom/sun/jmx/snmp/ThreadContext;
            0    5     2       key  Ljava/lang/String;
            0    5     3     value  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      previous  
      key       
      value     

  public static java.lang.Object get(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.lang.String key
         0: .line 125
            aload 0 /* key */
            invokestatic com.sun.jmx.snmp.ThreadContext.contextContaining:(Ljava/lang/String;)Lcom/sun/jmx/snmp/ThreadContext;
            astore 1 /* context */
        start local 1 // com.sun.jmx.snmp.ThreadContext context
         1: .line 126
            aload 1 /* context */
            ifnonnull 3
         2: .line 127
            aconst_null
            areturn
         3: .line 129
      StackMap locals: com.sun.jmx.snmp.ThreadContext
      StackMap stack:
            aload 1 /* context */
            getfield com.sun.jmx.snmp.ThreadContext.value:Ljava/lang/Object;
            areturn
        end local 1 // com.sun.jmx.snmp.ThreadContext context
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0      key  Ljava/lang/String;
            1    4     1  context  Lcom/sun/jmx/snmp/ThreadContext;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
      Name  Flags
      key   

  public static boolean contains(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String key
         0: .line 148
            aload 0 /* key */
            invokestatic com.sun.jmx.snmp.ThreadContext.contextContaining:(Ljava/lang/String;)Lcom/sun/jmx/snmp/ThreadContext;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   key  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
      Name  Flags
      key   

  private static com.sun.jmx.snmp.ThreadContext contextContaining(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/sun/jmx/snmp/ThreadContext;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String key
         0: .line 159
            aload 0 /* key */
            ifnonnull 2
         1: .line 160
            new java.lang.IllegalArgumentException
            dup
            ldc "null key"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 161
      StackMap locals:
      StackMap stack:
            invokestatic com.sun.jmx.snmp.ThreadContext.getContext:()Lcom/sun/jmx/snmp/ThreadContext;
            astore 1 /* context */
        start local 1 // com.sun.jmx.snmp.ThreadContext context
         3: .line 162
            goto 7
         4: .line 164
      StackMap locals: com.sun.jmx.snmp.ThreadContext
      StackMap stack:
            aload 0 /* key */
            aload 1 /* context */
            getfield com.sun.jmx.snmp.ThreadContext.key:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 165
            aload 1 /* context */
            areturn
         6: .line 163
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield com.sun.jmx.snmp.ThreadContext.previous:Lcom/sun/jmx/snmp/ThreadContext;
            astore 1 /* context */
         7: .line 162
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            ifnonnull 4
        end local 1 // com.sun.jmx.snmp.ThreadContext context
         8: .line 169
            aconst_null
            areturn
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0      key  Ljava/lang/String;
            3    8     1  context  Lcom/sun/jmx/snmp/ThreadContext;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
      Name  Flags
      key   

  public static com.sun.jmx.snmp.ThreadContext push(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Lcom/sun/jmx/snmp/ThreadContext;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.String key
        start local 1 // java.lang.Object value
         0: .line 213
            aload 0 /* key */
            ifnonnull 2
         1: .line 214
            new java.lang.IllegalArgumentException
            dup
            ldc "null key"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 216
      StackMap locals:
      StackMap stack:
            invokestatic com.sun.jmx.snmp.ThreadContext.getContext:()Lcom/sun/jmx/snmp/ThreadContext;
            astore 2 /* oldContext */
        start local 2 // com.sun.jmx.snmp.ThreadContext oldContext
         3: .line 217
            aload 2 /* oldContext */
            ifnonnull 5
         4: .line 218
            new com.sun.jmx.snmp.ThreadContext
            dup
            aconst_null
            aconst_null
            aconst_null
            invokespecial com.sun.jmx.snmp.ThreadContext.<init>:(Lcom/sun/jmx/snmp/ThreadContext;Ljava/lang/String;Ljava/lang/Object;)V
            astore 2 /* oldContext */
         5: .line 219
      StackMap locals: com.sun.jmx.snmp.ThreadContext
      StackMap stack:
            new com.sun.jmx.snmp.ThreadContext
            dup
            aload 2 /* oldContext */
            aload 0 /* key */
            aload 1 /* value */
            invokespecial com.sun.jmx.snmp.ThreadContext.<init>:(Lcom/sun/jmx/snmp/ThreadContext;Ljava/lang/String;Ljava/lang/Object;)V
            astore 3 /* newContext */
        start local 3 // com.sun.jmx.snmp.ThreadContext newContext
         6: .line 220
            aload 3 /* newContext */
            invokestatic com.sun.jmx.snmp.ThreadContext.setContext:(Lcom/sun/jmx/snmp/ThreadContext;)V
         7: .line 221
            aload 2 /* oldContext */
            areturn
        end local 3 // com.sun.jmx.snmp.ThreadContext newContext
        end local 2 // com.sun.jmx.snmp.ThreadContext oldContext
        end local 1 // java.lang.Object value
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0         key  Ljava/lang/String;
            0    8     1       value  Ljava/lang/Object;
            3    8     2  oldContext  Lcom/sun/jmx/snmp/ThreadContext;
            6    8     3  newContext  Lcom/sun/jmx/snmp/ThreadContext;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
       Name  Flags
      key    
      value  

  public static com.sun.jmx.snmp.ThreadContext getThreadContext();
    descriptor: ()Lcom/sun/jmx/snmp/ThreadContext;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 232
            invokestatic com.sun.jmx.snmp.ThreadContext.getContext:()Lcom/sun/jmx/snmp/ThreadContext;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void restore(com.sun.jmx.snmp.ThreadContext);
    descriptor: (Lcom/sun/jmx/snmp/ThreadContext;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.jmx.snmp.ThreadContext oldContext
         0: .line 255
            aload 0 /* oldContext */
            ifnonnull 2
         1: .line 256
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 259
      StackMap locals:
      StackMap stack:
            invokestatic com.sun.jmx.snmp.ThreadContext.getContext:()Lcom/sun/jmx/snmp/ThreadContext;
            astore 1 /* context */
        start local 1 // com.sun.jmx.snmp.ThreadContext context
         3: .line 260
            goto 7
         4: .line 262
      StackMap locals: com.sun.jmx.snmp.ThreadContext
      StackMap stack:
            aload 1 /* context */
            ifnonnull 6
         5: .line 263
            new java.lang.IllegalArgumentException
            dup
            ldc "Restored context is not contained in current context"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 261
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield com.sun.jmx.snmp.ThreadContext.previous:Lcom/sun/jmx/snmp/ThreadContext;
            astore 1 /* context */
         7: .line 260
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            aload 0 /* oldContext */
            if_acmpne 4
        end local 1 // com.sun.jmx.snmp.ThreadContext context
         8: .line 274
            aload 0 /* oldContext */
            getfield com.sun.jmx.snmp.ThreadContext.key:Ljava/lang/String;
            ifnonnull 10
         9: .line 275
            aconst_null
            astore 0 /* oldContext */
        10: .line 277
      StackMap locals:
      StackMap stack:
            aload 0 /* oldContext */
            invokestatic com.sun.jmx.snmp.ThreadContext.setContext:(Lcom/sun/jmx/snmp/ThreadContext;)V
        11: .line 278
            return
        end local 0 // com.sun.jmx.snmp.ThreadContext oldContext
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0  oldContext  Lcom/sun/jmx/snmp/ThreadContext;
            3    8     1     context  Lcom/sun/jmx/snmp/ThreadContext;
    Exceptions:
      throws java.lang.NullPointerException, java.lang.IllegalArgumentException
    MethodParameters:
            Name  Flags
      oldContext  

  public void setInitialContext(com.sun.jmx.snmp.ThreadContext);
    descriptor: (Lcom/sun/jmx/snmp/ThreadContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.jmx.snmp.ThreadContext this
        start local 1 // com.sun.jmx.snmp.ThreadContext context
         0: .line 311
            invokestatic com.sun.jmx.snmp.ThreadContext.getContext:()Lcom/sun/jmx/snmp/ThreadContext;
            ifnull 2
         1: .line 312
            new java.lang.IllegalArgumentException
            dup
            ldc "previous context not empty"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 313
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            invokestatic com.sun.jmx.snmp.ThreadContext.setContext:(Lcom/sun/jmx/snmp/ThreadContext;)V
         3: .line 314
            return
        end local 1 // com.sun.jmx.snmp.ThreadContext context
        end local 0 // com.sun.jmx.snmp.ThreadContext this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/sun/jmx/snmp/ThreadContext;
            0    4     1  context  Lcom/sun/jmx/snmp/ThreadContext;
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
         Name  Flags
      context  

  private static com.sun.jmx.snmp.ThreadContext getContext();
    descriptor: ()Lcom/sun/jmx/snmp/ThreadContext;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 317
            getstatic com.sun.jmx.snmp.ThreadContext.localContext:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast com.sun.jmx.snmp.ThreadContext
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void setContext(com.sun.jmx.snmp.ThreadContext);
    descriptor: (Lcom/sun/jmx/snmp/ThreadContext;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.jmx.snmp.ThreadContext context
         0: .line 321
            getstatic com.sun.jmx.snmp.ThreadContext.localContext:Ljava/lang/ThreadLocal;
            aload 0 /* context */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         1: .line 322
            return
        end local 0 // com.sun.jmx.snmp.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lcom/sun/jmx/snmp/ThreadContext;
    MethodParameters:
         Name  Flags
      context  
}
SourceFile: "ThreadContext.java"