public class com.sun.tools.javac.util.Context
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.tools.javac.util.Context
  super_class: java.lang.Object
{
  protected final java.util.Map<com.sun.tools.javac.util.Context$Key<?>, java.lang.Object> ht;
    descriptor: Ljava/util/Map;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljava/util/Map<Lcom/sun/tools/javac/util/Context$Key<*>;Ljava/lang/Object;>;

  private final java.util.Map<com.sun.tools.javac.util.Context$Key<?>, com.sun.tools.javac.util.Context$Factory<?>> ft;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lcom/sun/tools/javac/util/Context$Key<*>;Lcom/sun/tools/javac/util/Context$Factory<*>;>;

  private final java.util.Map<java.lang.Class<?>, com.sun.tools.javac.util.Context$Key<?>> kt;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Lcom/sun/tools/javac/util/Context$Key<*>;>;

  public <T> void put(com.sun.tools.javac.util.Context$Key<T>, com.sun.tools.javac.util.Context$Factory<T>);
    descriptor: (Lcom/sun/tools/javac/util/Context$Key;Lcom/sun/tools/javac/util/Context$Factory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // com.sun.tools.javac.util.Context$Key key
        start local 2 // com.sun.tools.javac.util.Context$Factory fac
         0: .line 126
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            invokestatic com.sun.tools.javac.util.Context.checkState:(Ljava/util/Map;)V
         1: .line 127
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            aload 1 /* key */
            aload 2 /* fac */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* old */
        start local 3 // java.lang.Object old
         2: .line 128
            aload 3 /* old */
            ifnull 4
         3: .line 129
            new java.lang.AssertionError
            dup
            ldc "duplicate context value"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         4: .line 130
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ft:Ljava/util/Map;
            invokestatic com.sun.tools.javac.util.Context.checkState:(Ljava/util/Map;)V
         5: .line 131
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ft:Ljava/util/Map;
            aload 1 /* key */
            aload 2 /* fac */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 132
            return
        end local 3 // java.lang.Object old
        end local 2 // com.sun.tools.javac.util.Context$Factory fac
        end local 1 // com.sun.tools.javac.util.Context$Key key
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/javac/util/Context;
            0    7     1   key  Lcom/sun/tools/javac/util/Context$Key<TT;>;
            0    7     2   fac  Lcom/sun/tools/javac/util/Context$Factory<TT;>;
            2    7     3   old  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lcom/sun/tools/javac/util/Context$Key<TT;>;Lcom/sun/tools/javac/util/Context$Factory<TT;>;)V
    MethodParameters:
      Name  Flags
      key   
      fac   

  public <T> void put(com.sun.tools.javac.util.Context$Key<T>, );
    descriptor: (Lcom/sun/tools/javac/util/Context$Key;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // com.sun.tools.javac.util.Context$Key key
        start local 2 // java.lang.Object data
         0: .line 136
            aload 2 /* data */
            instanceof com.sun.tools.javac.util.Context$Factory
            ifeq 2
         1: .line 137
            new java.lang.AssertionError
            dup
            ldc "T extends Context.Factory"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            invokestatic com.sun.tools.javac.util.Context.checkState:(Ljava/util/Map;)V
         3: .line 139
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            aload 1 /* key */
            aload 2 /* data */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* old */
        start local 3 // java.lang.Object old
         4: .line 140
            aload 3 /* old */
            ifnull 6
            aload 3 /* old */
            instanceof com.sun.tools.javac.util.Context$Factory
            ifne 6
            aload 3 /* old */
            aload 2 /* data */
            if_acmpeq 6
            aload 2 /* data */
            ifnull 6
         5: .line 141
            new java.lang.AssertionError
            dup
            ldc "duplicate context value"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         6: .line 142
      StackMap locals: java.lang.Object
      StackMap stack:
            return
        end local 3 // java.lang.Object old
        end local 2 // java.lang.Object data
        end local 1 // com.sun.tools.javac.util.Context$Key key
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/tools/javac/util/Context;
            0    7     1   key  Lcom/sun/tools/javac/util/Context$Key<TT;>;
            0    7     2  data  TT;
            4    7     3   old  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Lcom/sun/tools/javac/util/Context$Key<TT;>;TT;)V
    MethodParameters:
      Name  Flags
      key   
      data  

  public <T> T get(com.sun.tools.javac.util.Context$Key<T>);
    descriptor: (Lcom/sun/tools/javac/util/Context$Key;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // com.sun.tools.javac.util.Context$Key key
         0: .line 146
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            invokestatic com.sun.tools.javac.util.Context.checkState:(Ljava/util/Map;)V
         1: .line 147
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* o */
        start local 2 // java.lang.Object o
         2: .line 148
            aload 2 /* o */
            instanceof com.sun.tools.javac.util.Context$Factory
            ifeq 10
         3: .line 149
            aload 2 /* o */
            checkcast com.sun.tools.javac.util.Context$Factory
            astore 3 /* fac */
        start local 3 // com.sun.tools.javac.util.Context$Factory fac
         4: .line 150
            aload 3 /* fac */
            aload 0 /* this */
            invokeinterface com.sun.tools.javac.util.Context$Factory.make:(Lcom/sun/tools/javac/util/Context;)Ljava/lang/Object;
            astore 2 /* o */
         5: .line 151
            aload 2 /* o */
            instanceof com.sun.tools.javac.util.Context$Factory
            ifeq 7
         6: .line 152
            new java.lang.AssertionError
            dup
            ldc "T extends Context.Factory"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         7: .line 153
      StackMap locals: java.lang.Object com.sun.tools.javac.util.Context$Factory
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            aload 1 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 2 /* o */
            if_acmpne 8
            iconst_1
            goto 9
      StackMap locals:
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: invokestatic com.sun.tools.javac.util.Assert.check:(Z)V
        end local 3 // com.sun.tools.javac.util.Context$Factory fac
        10: .line 161
      StackMap locals:
      StackMap stack:
            aload 2 /* o */
            invokestatic com.sun.tools.javac.util.Context.uncheckedCast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Object o
        end local 1 // com.sun.tools.javac.util.Context$Key key
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/sun/tools/javac/util/Context;
            0   11     1   key  Lcom/sun/tools/javac/util/Context$Key<TT;>;
            2   11     2     o  Ljava/lang/Object;
            4   10     3   fac  Lcom/sun/tools/javac/util/Context$Factory<*>;
    Signature: <T:Ljava/lang/Object;>(Lcom/sun/tools/javac/util/Context$Key<TT;>;)TT;
    MethodParameters:
      Name  Flags
      key   

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.tools.javac.util.Context this
         0: .line 164
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 122
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
         2: .line 169
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.sun.tools.javac.util.Context.ft:Ljava/util/Map;
         3: .line 174
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.sun.tools.javac.util.Context.kt:Ljava/util/Map;
         4: .line 164
            return
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/tools/javac/util/Context;

  protected <T> com.sun.tools.javac.util.Context$Key<T> key(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/sun/tools/javac/util/Context$Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // java.lang.Class clss
         0: .line 177
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.kt:Ljava/util/Map;
            invokestatic com.sun.tools.javac.util.Context.checkState:(Ljava/util/Map;)V
         1: .line 178
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.kt:Ljava/util/Map;
            aload 1 /* clss */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.sun.tools.javac.util.Context.uncheckedCast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.sun.tools.javac.util.Context$Key
            astore 2 /* k */
        start local 2 // com.sun.tools.javac.util.Context$Key k
         2: .line 179
            aload 2 /* k */
            ifnonnull 5
         3: .line 180
            new com.sun.tools.javac.util.Context$Key
            dup
            invokespecial com.sun.tools.javac.util.Context$Key.<init>:()V
            astore 2 /* k */
         4: .line 181
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.kt:Ljava/util/Map;
            aload 1 /* clss */
            aload 2 /* k */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 183
      StackMap locals: com.sun.tools.javac.util.Context$Key
      StackMap stack:
            aload 2 /* k */
            areturn
        end local 2 // com.sun.tools.javac.util.Context$Key k
        end local 1 // java.lang.Class clss
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/sun/tools/javac/util/Context;
            0    6     1  clss  Ljava/lang/Class<TT;>;
            2    6     2     k  Lcom/sun/tools/javac/util/Context$Key<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lcom/sun/tools/javac/util/Context$Key<TT;>;
    MethodParameters:
      Name  Flags
      clss  

  public <T> T get(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // java.lang.Class clazz
         0: .line 187
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual com.sun.tools.javac.util.Context.key:(Ljava/lang/Class;)Lcom/sun/tools/javac/util/Context$Key;
            invokevirtual com.sun.tools.javac.util.Context.get:(Lcom/sun/tools/javac/util/Context$Key;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/sun/tools/javac/util/Context;
            0    1     1  clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
       Name  Flags
      clazz  

  public <T> void put(java.lang.Class<T>, );
    descriptor: (Ljava/lang/Class;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // java.lang.Class clazz
        start local 2 // java.lang.Object data
         0: .line 191
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual com.sun.tools.javac.util.Context.key:(Ljava/lang/Class;)Lcom/sun/tools/javac/util/Context$Key;
            aload 2 /* data */
            invokevirtual com.sun.tools.javac.util.Context.put:(Lcom/sun/tools/javac/util/Context$Key;Ljava/lang/Object;)V
         1: .line 192
            return
        end local 2 // java.lang.Object data
        end local 1 // java.lang.Class clazz
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/sun/tools/javac/util/Context;
            0    2     1  clazz  Ljava/lang/Class<TT;>;
            0    2     2   data  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;TT;)V
    MethodParameters:
       Name  Flags
      clazz  
      data   

  public <T> void put(java.lang.Class<T>, com.sun.tools.javac.util.Context$Factory<T>);
    descriptor: (Ljava/lang/Class;Lcom/sun/tools/javac/util/Context$Factory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.tools.javac.util.Context this
        start local 1 // java.lang.Class clazz
        start local 2 // com.sun.tools.javac.util.Context$Factory fac
         0: .line 194
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* clazz */
            invokevirtual com.sun.tools.javac.util.Context.key:(Ljava/lang/Class;)Lcom/sun/tools/javac/util/Context$Key;
            aload 2 /* fac */
            invokevirtual com.sun.tools.javac.util.Context.put:(Lcom/sun/tools/javac/util/Context$Key;Lcom/sun/tools/javac/util/Context$Factory;)V
         1: .line 195
            return
        end local 2 // com.sun.tools.javac.util.Context$Factory fac
        end local 1 // java.lang.Class clazz
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/sun/tools/javac/util/Context;
            0    2     1  clazz  Ljava/lang/Class<TT;>;
            0    2     2    fac  Lcom/sun/tools/javac/util/Context$Factory<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lcom/sun/tools/javac/util/Context$Factory<TT;>;)V
    MethodParameters:
       Name  Flags
      clazz  
      fac    

  private static <T> T uncheckedCast();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object o
         0: .line 203
            aload 0 /* o */
            areturn
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Ljava/lang/Object;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Object;)TT;
    MethodParameters:
      Name  Flags
      o     

  public void dump();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.sun.tools.javac.util.Context this
         0: .line 207
            aload 0 /* this */
            getfield com.sun.tools.javac.util.Context.ht:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: com.sun.tools.javac.util.Context top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 1 /* value */
        start local 1 // java.lang.Object value
         2: .line 208
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 1 /* value */
            ifnonnull 3
            aconst_null
            goto 4
      StackMap locals: com.sun.tools.javac.util.Context java.lang.Object java.util.Iterator
      StackMap stack: java.io.PrintStream
         3: aload 1 /* value */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
      StackMap locals: com.sun.tools.javac.util.Context java.lang.Object java.util.Iterator
      StackMap stack: java.io.PrintStream java.lang.Class
         4: invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
        end local 1 // java.lang.Object value
         5: .line 207
      StackMap locals: com.sun.tools.javac.util.Context top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         6: .line 209
            return
        end local 0 // com.sun.tools.javac.util.Context this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lcom/sun/tools/javac/util/Context;
            2    5     1  value  Ljava/lang/Object;

  private static void checkState(java.util.Map<?, ?>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.util.Map t
         0: .line 212
            aload 0 /* t */
            ifnonnull 2
         1: .line 213
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
         2: .line 214
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.util.Map t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     t  Ljava/util/Map<**>;
    Signature: (Ljava/util/Map<**>;)V
    MethodParameters:
      Name  Flags
      t     
}
SourceFile: "Context.java"
NestMembers:
  com.sun.tools.javac.util.Context$Factory  com.sun.tools.javac.util.Context$Key
InnerClasses:
  public abstract Factory = com.sun.tools.javac.util.Context$Factory of com.sun.tools.javac.util.Context
  public Key = com.sun.tools.javac.util.Context$Key of com.sun.tools.javac.util.Context