class jdk.jshell.KeyMap
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.jshell.KeyMap
  super_class: java.lang.Object
{
  private final jdk.jshell.JShell state;
    descriptor: Ljdk/jshell/JShell;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.String, jdk.jshell.Key$TypeDeclKey> classMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljdk/jshell/Key$TypeDeclKey;>;

  private final java.util.Map<java.lang.String, jdk.jshell.Key$MethodKey> methodMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljdk/jshell/Key$MethodKey;>;

  private final java.util.Map<java.lang.String, jdk.jshell.Key$VarKey> varMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljdk/jshell/Key$VarKey;>;

  private final java.util.Map<java.lang.String, jdk.jshell.Key$ImportKey> importMap;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljdk/jshell/Key$ImportKey;>;

  void <init>(jdk.jshell.JShell);
    descriptor: (Ljdk/jshell/JShell;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // jdk.jshell.JShell state
         0: .line 49
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 53
            aload 0 /* this */
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            putfield jdk.jshell.KeyMap.classMap:Ljava/util/Map;
         2: .line 54
            aload 0 /* this */
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            putfield jdk.jshell.KeyMap.methodMap:Ljava/util/Map;
         3: .line 55
            aload 0 /* this */
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            putfield jdk.jshell.KeyMap.varMap:Ljava/util/Map;
         4: .line 56
            aload 0 /* this */
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            putfield jdk.jshell.KeyMap.importMap:Ljava/util/Map;
         5: .line 50
            aload 0 /* this */
            aload 1 /* state */
            putfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
         6: .line 51
            return
        end local 1 // jdk.jshell.JShell state
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Ljdk/jshell/KeyMap;
            0    7     1  state  Ljdk/jshell/JShell;
    MethodParameters:
       Name  Flags
      state  

  jdk.jshell.Key$TypeDeclKey keyForClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/jshell/Key$TypeDeclKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // java.lang.String name
         0: .line 59
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.classMap:Ljava/util/Map;
            aload 1 /* name */
            aload 0 /* this */
            aload 1 /* name */
            invokedynamic apply(Ljdk/jshell/KeyMap;Ljava/lang/String;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  jdk/jshell/KeyMap.lambda$0(Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$TypeDeclKey; (7)
                  (Ljava/lang/String;)Ljdk/jshell/Key$TypeDeclKey;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast jdk.jshell.Key$TypeDeclKey
            areturn
        end local 1 // java.lang.String name
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  jdk.jshell.Key$MethodKey keyForMethod(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$MethodKey;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String parameterTypes
         0: .line 63
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.methodMap:Ljava/util/Map;
            new java.lang.StringBuilder
            dup
            aload 1 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* parameterTypes */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         1: .line 64
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* parameterTypes */
            invokedynamic apply(Ljdk/jshell/KeyMap;Ljava/lang/String;Ljava/lang/String;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  jdk/jshell/KeyMap.lambda$1(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$MethodKey; (7)
                  (Ljava/lang/String;)Ljdk/jshell/Key$MethodKey;
         2: .line 63
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast jdk.jshell.Key$MethodKey
            areturn
        end local 2 // java.lang.String parameterTypes
        end local 1 // java.lang.String name
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Ljdk/jshell/KeyMap;
            0    3     1            name  Ljava/lang/String;
            0    3     2  parameterTypes  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      name            
      parameterTypes  

  jdk.jshell.Key$VarKey keyForVariable(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/jshell/Key$VarKey;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // java.lang.String name
         0: .line 68
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.varMap:Ljava/util/Map;
            aload 1 /* name */
            aload 0 /* this */
            aload 1 /* name */
            invokedynamic apply(Ljdk/jshell/KeyMap;Ljava/lang/String;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  jdk/jshell/KeyMap.lambda$2(Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$VarKey; (7)
                  (Ljava/lang/String;)Ljdk/jshell/Key$VarKey;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast jdk.jshell.Key$VarKey
            areturn
        end local 1 // java.lang.String name
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  jdk.jshell.Key$ImportKey keyForImport(java.lang.String, jdk.jshell.Snippet$SubKind);
    descriptor: (Ljava/lang/String;Ljdk/jshell/Snippet$SubKind;)Ljdk/jshell/Key$ImportKey;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // java.lang.String name
        start local 2 // jdk.jshell.Snippet$SubKind snippetKind
         0: .line 72
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.importMap:Ljava/util/Map;
            new java.lang.StringBuilder
            dup
            aload 1 /* name */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         1: .line 73
            aload 2 /* snippetKind */
            getstatic jdk.jshell.Snippet$SubKind.SINGLE_TYPE_IMPORT_SUBKIND:Ljdk/jshell/Snippet$SubKind;
            if_acmpeq 2
            aload 2 /* snippetKind */
            getstatic jdk.jshell.Snippet$SubKind.SINGLE_STATIC_IMPORT_SUBKIND:Ljdk/jshell/Snippet$SubKind;
            if_acmpne 3
         2: .line 74
      StackMap locals: jdk.jshell.KeyMap java.lang.String jdk.jshell.Snippet$SubKind
      StackMap stack: java.util.Map java.lang.StringBuilder
            ldc "single"
            goto 4
         3: .line 75
      StackMap locals: jdk.jshell.KeyMap java.lang.String jdk.jshell.Snippet$SubKind
      StackMap stack: java.util.Map java.lang.StringBuilder
            aload 2 /* snippetKind */
            invokevirtual jdk.jshell.Snippet$SubKind.toString:()Ljava/lang/String;
         4: .line 73
      StackMap locals: jdk.jshell.KeyMap java.lang.String jdk.jshell.Snippet$SubKind
      StackMap stack: java.util.Map java.lang.StringBuilder java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 76
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* snippetKind */
            invokedynamic apply(Ljdk/jshell/KeyMap;Ljava/lang/String;Ljdk/jshell/Snippet$SubKind;)Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  jdk/jshell/KeyMap.lambda$3(Ljava/lang/String;Ljdk/jshell/Snippet$SubKind;Ljava/lang/String;)Ljdk/jshell/Key$ImportKey; (7)
                  (Ljava/lang/String;)Ljdk/jshell/Key$ImportKey;
         6: .line 72
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast jdk.jshell.Key$ImportKey
            areturn
        end local 2 // jdk.jshell.Snippet$SubKind snippetKind
        end local 1 // java.lang.String name
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Ljdk/jshell/KeyMap;
            0    7     1         name  Ljava/lang/String;
            0    7     2  snippetKind  Ljdk/jshell/Snippet$SubKind;
    MethodParameters:
             Name  Flags
      name         
      snippetKind  

  jdk.jshell.Key$StatementKey keyForStatement();
    descriptor: ()Ljdk/jshell/Key$StatementKey;
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.jshell.KeyMap this
         0: .line 80
            new jdk.jshell.Key$StatementKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            invokespecial jdk.jshell.Key$StatementKey.<init>:(Ljdk/jshell/JShell;)V
            areturn
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;

  jdk.jshell.Key$ExpressionKey keyForExpression(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$ExpressionKey;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String type
         0: .line 84
            new jdk.jshell.Key$ExpressionKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            aload 1 /* name */
            aload 2 /* type */
            invokespecial jdk.jshell.Key$ExpressionKey.<init>:(Ljdk/jshell/JShell;Ljava/lang/String;Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.String type
        end local 1 // java.lang.String name
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     1  name  Ljava/lang/String;
            0    1     2  type  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  
      type  

  jdk.jshell.Key$ErroneousKey keyForErroneous();
    descriptor: ()Ljdk/jshell/Key$ErroneousKey;
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.jshell.KeyMap this
         0: .line 88
            new jdk.jshell.Key$ErroneousKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            invokespecial jdk.jshell.Key$ErroneousKey.<init>:(Ljdk/jshell/JShell;)V
            areturn
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;

  boolean doesVariableNameExist(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // jdk.jshell.KeyMap this
        start local 1 // java.lang.String name
         0: .line 92
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.varMap:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // java.lang.String name
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/jshell/KeyMap;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  java.util.stream.Stream<jdk.jshell.Key$ImportKey> importKeys();
    descriptor: ()Ljava/util/stream/Stream;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.jshell.KeyMap this
         0: .line 96
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.importMap:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.stream:()Ljava/util/stream/Stream;
            areturn
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
    Signature: ()Ljava/util/stream/Stream<Ljdk/jshell/Key$ImportKey;>;

  private jdk.jshell.Key$TypeDeclKey lambda$0(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$TypeDeclKey;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // jdk.jshell.KeyMap this
        start local 2 // java.lang.String k
         0: .line 59
            new jdk.jshell.Key$TypeDeclKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            aload 1
            invokespecial jdk.jshell.Key$TypeDeclKey.<init>:(Ljdk/jshell/JShell;Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.String k
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     2     k  Ljava/lang/String;

  private jdk.jshell.Key$MethodKey lambda$1(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$MethodKey;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // jdk.jshell.KeyMap this
        start local 3 // java.lang.String k
         0: .line 64
            new jdk.jshell.Key$MethodKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            aload 1
            aload 2
            invokespecial jdk.jshell.Key$MethodKey.<init>:(Ljdk/jshell/JShell;Ljava/lang/String;Ljava/lang/String;)V
            areturn
        end local 3 // java.lang.String k
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     3     k  Ljava/lang/String;

  private jdk.jshell.Key$VarKey lambda$2(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljdk/jshell/Key$VarKey;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // jdk.jshell.KeyMap this
        start local 2 // java.lang.String k
         0: .line 68
            new jdk.jshell.Key$VarKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            aload 1
            invokespecial jdk.jshell.Key$VarKey.<init>:(Ljdk/jshell/JShell;Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.String k
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     2     k  Ljava/lang/String;

  private jdk.jshell.Key$ImportKey lambda$3(java.lang.String, jdk.jshell.Snippet$SubKind, java.lang.String);
    descriptor: (Ljava/lang/String;Ljdk/jshell/Snippet$SubKind;Ljava/lang/String;)Ljdk/jshell/Key$ImportKey;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // jdk.jshell.KeyMap this
        start local 3 // java.lang.String k
         0: .line 76
            new jdk.jshell.Key$ImportKey
            dup
            aload 0 /* this */
            getfield jdk.jshell.KeyMap.state:Ljdk/jshell/JShell;
            aload 1
            aload 2
            invokespecial jdk.jshell.Key$ImportKey.<init>:(Ljdk/jshell/JShell;Ljava/lang/String;Ljdk/jshell/Snippet$SubKind;)V
            areturn
        end local 3 // java.lang.String k
        end local 0 // jdk.jshell.KeyMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/jshell/KeyMap;
            0    1     3     k  Ljava/lang/String;
}
SourceFile: "KeyMap.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  ErroneousKey = jdk.jshell.Key$ErroneousKey of jdk.jshell.Key
  ExpressionKey = jdk.jshell.Key$ExpressionKey of jdk.jshell.Key
  ImportKey = jdk.jshell.Key$ImportKey of jdk.jshell.Key
  MethodKey = jdk.jshell.Key$MethodKey of jdk.jshell.Key
  StatementKey = jdk.jshell.Key$StatementKey of jdk.jshell.Key
  TypeDeclKey = jdk.jshell.Key$TypeDeclKey of jdk.jshell.Key
  VarKey = jdk.jshell.Key$VarKey of jdk.jshell.Key
  public final SubKind = jdk.jshell.Snippet$SubKind of jdk.jshell.Snippet