class jdk.internal.jshell.tool.ContinuousCompletionProvider implements jdk.internal.jshell.tool.JShellTool$CompletionProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.internal.jshell.tool.ContinuousCompletionProvider
  super_class: java.lang.Object
{
  static final java.util.function.BiPredicate<java.lang.String, java.lang.String> STARTSWITH_MATCHER;
    descriptor: Ljava/util/function/BiPredicate;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;

  static final java.util.function.BiPredicate<java.lang.String, java.lang.String> PERFECT_MATCHER;
    descriptor: Ljava/util/function/BiPredicate;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;

  private final java.util.function.Supplier<java.util.Map<java.lang.String, jdk.internal.jshell.tool.JShellTool$CompletionProvider>> wordCompletionProviderSupplier;
    descriptor: Ljava/util/function/Supplier;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/function/Supplier<Ljava/util/Map<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;>;

  private final java.util.function.BiPredicate<java.lang.String, java.lang.String> matcher;
    descriptor: Ljava/util/function/BiPredicate;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            invokedynamic test()Ljava/util/function/BiPredicate;
              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;)Z
                  java/lang/String.startsWith(Ljava/lang/String;)Z (5)
                  (Ljava/lang/String;Ljava/lang/String;)Z
            putstatic jdk.internal.jshell.tool.ContinuousCompletionProvider.STARTSWITH_MATCHER:Ljava/util/function/BiPredicate;
         1: .line 42
            invokedynamic test()Ljava/util/function/BiPredicate;
              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;)Z
                  java/lang/String.equals(Ljava/lang/Object;)Z (5)
                  (Ljava/lang/String;Ljava/lang/String;)Z
            putstatic jdk.internal.jshell.tool.ContinuousCompletionProvider.PERFECT_MATCHER:Ljava/util/function/BiPredicate;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.util.Map<java.lang.String, jdk.internal.jshell.tool.JShellTool$CompletionProvider>, java.util.function.BiPredicate<java.lang.String, java.lang.String>);
    descriptor: (Ljava/util/Map;Ljava/util/function/BiPredicate;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
        start local 1 // java.util.Map wordCompletionProvider
        start local 2 // java.util.function.BiPredicate matcher
         0: .line 50
            aload 0 /* this */
            aload 1 /* wordCompletionProvider */
            invokedynamic get(Ljava/util/Map;)Ljava/util/function/Supplier;
              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;
                  jdk/internal/jshell/tool/ContinuousCompletionProvider.lambda$2(Ljava/util/Map;)Ljava/util/Map; (6)
                  ()Ljava/util/Map;
            aload 2 /* matcher */
            invokespecial jdk.internal.jshell.tool.ContinuousCompletionProvider.<init>:(Ljava/util/function/Supplier;Ljava/util/function/BiPredicate;)V
         1: .line 51
            return
        end local 2 // java.util.function.BiPredicate matcher
        end local 1 // java.util.Map wordCompletionProvider
        end local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Ljdk/internal/jshell/tool/ContinuousCompletionProvider;
            0    2     1  wordCompletionProvider  Ljava/util/Map<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;
            0    2     2                 matcher  Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
                        Name  Flags
      wordCompletionProvider  
      matcher                 

  void <init>(java.util.function.Supplier<java.util.Map<java.lang.String, jdk.internal.jshell.tool.JShellTool$CompletionProvider>>, java.util.function.BiPredicate<java.lang.String, java.lang.String>);
    descriptor: (Ljava/util/function/Supplier;Ljava/util/function/BiPredicate;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
        start local 1 // java.util.function.Supplier wordCompletionProviderSupplier
        start local 2 // java.util.function.BiPredicate matcher
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            aload 1 /* wordCompletionProviderSupplier */
            putfield jdk.internal.jshell.tool.ContinuousCompletionProvider.wordCompletionProviderSupplier:Ljava/util/function/Supplier;
         2: .line 57
            aload 0 /* this */
            aload 2 /* matcher */
            putfield jdk.internal.jshell.tool.ContinuousCompletionProvider.matcher:Ljava/util/function/BiPredicate;
         3: .line 58
            return
        end local 2 // java.util.function.BiPredicate matcher
        end local 1 // java.util.function.Supplier wordCompletionProviderSupplier
        end local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
      LocalVariableTable:
        Start  End  Slot                            Name  Signature
            0    4     0                            this  Ljdk/internal/jshell/tool/ContinuousCompletionProvider;
            0    4     1  wordCompletionProviderSupplier  Ljava/util/function/Supplier<Ljava/util/Map<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;>;
            0    4     2                         matcher  Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (Ljava/util/function/Supplier<Ljava/util/Map<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;>;Ljava/util/function/BiPredicate<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
                                Name  Flags
      wordCompletionProviderSupplier  
      matcher                         

  public java.util.List<jdk.jshell.SourceCodeAnalysis$Suggestion> completionSuggestions(java.lang.String, int, int[]);
    descriptor: (Ljava/lang/String;I[I)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=4
        start local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
        start local 1 // java.lang.String input
        start local 2 // int cursor
        start local 3 // int[] anchor
         0: .line 62
            aload 1 /* input */
            iconst_0
            iload 2 /* cursor */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 4 /* prefix */
        start local 4 // java.lang.String prefix
         1: .line 63
            aload 4 /* prefix */
            bipush 32
            invokevirtual java.lang.String.indexOf:(I)I
            istore 5 /* space */
        start local 5 // int space
         2: .line 67
            aload 0 /* this */
            getfield jdk.internal.jshell.tool.ContinuousCompletionProvider.wordCompletionProviderSupplier:Ljava/util/function/Supplier;
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 7 /* wordCompletionProvider */
        start local 7 // java.util.Map wordCompletionProvider
         3: .line 69
            iload 5 /* space */
            iconst_m1
            if_icmpne 11
         4: .line 70
            aload 7 /* wordCompletionProvider */
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         5: .line 71
            invokeinterface java.util.stream.Stream.distinct:()Ljava/util/stream/Stream;
         6: .line 72
            aload 4 /* prefix */
            invokedynamic test(Ljava/lang/String;)Ljava/util/function/Predicate;
              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;)Z
                  jdk/internal/jshell/tool/ContinuousCompletionProvider.lambda$3(Ljava/lang/String;Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         7: .line 73
            invokedynamic apply()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/internal/jshell/tool/ContinuousCompletionProvider.lambda$4(Ljava/lang/String;)Ljdk/jshell/SourceCodeAnalysis$Suggestion; (6)
                  (Ljava/lang/String;)Ljdk/jshell/SourceCodeAnalysis$Suggestion;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
         8: .line 70
            astore 6 /* result */
        start local 6 // java.util.stream.Stream result
         9: .line 74
            aload 3 /* anchor */
            iconst_0
            iconst_0
            iastore
        10: .line 75
            goto 23
        end local 6 // java.util.stream.Stream result
        11: .line 76
      StackMap locals: jdk.internal.jshell.tool.ContinuousCompletionProvider java.lang.String int int[] java.lang.String int top java.util.Map
      StackMap stack:
            aload 4 /* prefix */
            iload 5 /* space */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 8 /* rest */
        start local 8 // java.lang.String rest
        12: .line 77
            aload 4 /* prefix */
            iconst_0
            iload 5 /* space */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 9 /* word */
        start local 9 // java.lang.String word
        13: .line 79
            aload 7 /* wordCompletionProvider */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        14: .line 80
            aload 0 /* this */
            aload 9 /* word */
            invokedynamic test(Ljdk/internal/jshell/tool/ContinuousCompletionProvider;Ljava/lang/String;)Ljava/util/function/Predicate;
              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;)Z
                  jdk/internal/jshell/tool/ContinuousCompletionProvider.lambda$5(Ljava/lang/String;Ljava/util/Map$Entry;)Z (7)
                  (Ljava/util/Map$Entry;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
        15: .line 81
            invokedynamic apply()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;
                  java/util/Map$Entry.getValue()Ljava/lang/Object; (9 itf)
                  (Ljava/util/Map$Entry;)Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        16: .line 82
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
        17: .line 79
            astore 10 /* candidates */
        start local 10 // java.util.List candidates
        18: .line 83
            aload 10 /* candidates */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 21
        19: .line 84
            aload 10 /* candidates */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast jdk.internal.jshell.tool.JShellTool$CompletionProvider
            aload 8 /* rest */
            iload 2 /* cursor */
            iload 5 /* space */
            isub
            iconst_1
            isub
            aload 3 /* anchor */
            invokeinterface jdk.internal.jshell.tool.JShellTool$CompletionProvider.completionSuggestions:(Ljava/lang/String;I[I)Ljava/util/List;
            invokeinterface java.util.List.stream:()Ljava/util/stream/Stream;
            astore 6 /* result */
        start local 6 // java.util.stream.Stream result
        20: .line 85
            goto 22
        end local 6 // java.util.stream.Stream result
        21: .line 86
      StackMap locals: java.lang.String java.lang.String java.util.List
      StackMap stack:
            invokestatic java.util.stream.Stream.empty:()Ljava/util/stream/Stream;
            astore 6 /* result */
        start local 6 // java.util.stream.Stream result
        22: .line 88
      StackMap locals: jdk.internal.jshell.tool.ContinuousCompletionProvider java.lang.String int int[] java.lang.String int java.util.stream.Stream java.util.Map java.lang.String java.lang.String java.util.List
      StackMap stack:
            aload 3 /* anchor */
            iconst_0
            dup2
            iaload
            iload 5 /* space */
            iconst_1
            iadd
            iadd
            iastore
        end local 10 // java.util.List candidates
        end local 9 // java.lang.String word
        end local 8 // java.lang.String rest
        23: .line 91
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            invokedynamic apply()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/SourceCodeAnalysis$Suggestion.continuation()Ljava/lang/String; (9 itf)
                  (Ljdk/jshell/SourceCodeAnalysis$Suggestion;)Ljava/lang/String;
            invokestatic java.util.Comparator.comparing:(Ljava/util/function/Function;)Ljava/util/Comparator;
            invokeinterface java.util.stream.Stream.sorted:(Ljava/util/Comparator;)Ljava/util/stream/Stream;
        24: .line 92
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
        25: .line 91
            areturn
        end local 7 // java.util.Map wordCompletionProvider
        end local 6 // java.util.stream.Stream result
        end local 5 // int space
        end local 4 // java.lang.String prefix
        end local 3 // int[] anchor
        end local 2 // int cursor
        end local 1 // java.lang.String input
        end local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   26     0                    this  Ljdk/internal/jshell/tool/ContinuousCompletionProvider;
            0   26     1                   input  Ljava/lang/String;
            0   26     2                  cursor  I
            0   26     3                  anchor  [I
            1   26     4                  prefix  Ljava/lang/String;
            2   26     5                   space  I
            9   11     6                  result  Ljava/util/stream/Stream<Ljdk/jshell/SourceCodeAnalysis$Suggestion;>;
           20   21     6                  result  Ljava/util/stream/Stream<Ljdk/jshell/SourceCodeAnalysis$Suggestion;>;
           22   26     6                  result  Ljava/util/stream/Stream<Ljdk/jshell/SourceCodeAnalysis$Suggestion;>;
            3   26     7  wordCompletionProvider  Ljava/util/Map<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;
           12   23     8                    rest  Ljava/lang/String;
           13   23     9                    word  Ljava/lang/String;
           18   23    10              candidates  Ljava/util/List<Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;
    Signature: (Ljava/lang/String;I[I)Ljava/util/List<Ljdk/jshell/SourceCodeAnalysis$Suggestion;>;
    MethodParameters:
        Name  Flags
      input   
      cursor  
      anchor  

  private static java.util.Map lambda$2(java.util.Map);
    descriptor: (Ljava/util/Map;)Ljava/util/Map;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 50
            aload 0
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static boolean lambda$3(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.String key
         0: .line 72
            aload 1 /* key */
            aload 0
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ireturn
        end local 1 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1   key  Ljava/lang/String;

  private static jdk.jshell.SourceCodeAnalysis$Suggestion lambda$4(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/jshell/SourceCodeAnalysis$Suggestion;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.String key
         0: .line 73
            new jdk.internal.jshell.tool.JShellTool$ArgSuggestion
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* key */
            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;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial jdk.internal.jshell.tool.JShellTool$ArgSuggestion.<init>:(Ljava/lang/String;)V
            areturn
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/lang/String;

  private boolean lambda$5(java.lang.String, java.util.Map$Entry);
    descriptor: (Ljava/lang/String;Ljava/util/Map$Entry;)Z
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
        start local 2 // java.util.Map$Entry e
         0: .line 80
            aload 0 /* this */
            getfield jdk.internal.jshell.tool.ContinuousCompletionProvider.matcher:Ljava/util/function/BiPredicate;
            aload 2 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 1
            invokeinterface java.util.function.BiPredicate.test:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.util.Map$Entry e
        end local 0 // jdk.internal.jshell.tool.ContinuousCompletionProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/internal/jshell/tool/ContinuousCompletionProvider;
            0    1     2     e  Ljava/util/Map$Entry<Ljava/lang/String;Ljdk/internal/jshell/tool/JShellTool$CompletionProvider;>;
}
SourceFile: "ContinuousCompletionProvider.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map
  ArgSuggestion = jdk.internal.jshell.tool.JShellTool$ArgSuggestion of jdk.internal.jshell.tool.JShellTool
  abstract CompletionProvider = jdk.internal.jshell.tool.JShellTool$CompletionProvider of jdk.internal.jshell.tool.JShellTool
  public abstract Suggestion = jdk.jshell.SourceCodeAnalysis$Suggestion of jdk.jshell.SourceCodeAnalysis