public interface java.util.spi.ToolProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: java.util.spi.ToolProvider
  super_class: java.lang.Object
{
  public abstract java.lang.String name();
    descriptor: ()Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract int run(java.io.PrintWriter, java.io.PrintWriter, java.lang.String[]);
    descriptor: (Ljava/io/PrintWriter;Ljava/io/PrintWriter;[Ljava/lang/String;)I
    flags: (0x0481) ACC_PUBLIC, ACC_VARARGS, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      out   
      err   
      args  

  public int run(java.io.PrintStream, java.io.PrintStream, java.lang.String[]);
    descriptor: (Ljava/io/PrintStream;Ljava/io/PrintStream;[Ljava/lang/String;)I
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // java.util.spi.ToolProvider this
        start local 1 // java.io.PrintStream out
        start local 2 // java.io.PrintStream err
        start local 3 // java.lang.String[] args
         0: .line 127
            aload 1 /* out */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 128
            aload 2 /* err */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 129
            aload 3 /* args */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 5
         3: .line 130
      StackMap locals: int int java.lang.String[]
      StackMap stack:
            aload 3 /* args */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 129
            iinc 4 1
      StackMap locals:
      StackMap stack:
         5: iload 4
            iload 5
            if_icmplt 3
         6: .line 133
            new java.io.PrintWriter
            dup
            aload 1 /* out */
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/OutputStream;)V
            astore 4 /* outWriter */
        start local 4 // java.io.PrintWriter outWriter
         7: .line 134
            new java.io.PrintWriter
            dup
            aload 2 /* err */
            invokespecial java.io.PrintWriter.<init>:(Ljava/io/OutputStream;)V
            astore 5 /* errWriter */
        start local 5 // java.io.PrintWriter errWriter
         8: .line 137
            aload 0 /* this */
            aload 4 /* outWriter */
            aload 5 /* errWriter */
            aload 3 /* args */
            invokeinterface java.util.spi.ToolProvider.run:(Ljava/io/PrintWriter;Ljava/io/PrintWriter;[Ljava/lang/String;)I
            istore 7
         9: .line 139
            aload 4 /* outWriter */
            invokevirtual java.io.PrintWriter.flush:()V
        10: .line 142
            aload 5 /* errWriter */
            invokevirtual java.io.PrintWriter.flush:()V
        11: .line 137
            iload 7
            ireturn
        12: .line 138
      StackMap locals: java.util.spi.ToolProvider java.io.PrintStream java.io.PrintStream java.lang.String[] java.io.PrintWriter java.io.PrintWriter
      StackMap stack: java.lang.Throwable
            astore 6
        13: .line 139
            aload 4 /* outWriter */
            invokevirtual java.io.PrintWriter.flush:()V
        14: .line 140
            aload 6
            athrow
        15: .line 141
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        16: .line 142
            aload 5 /* errWriter */
            invokevirtual java.io.PrintWriter.flush:()V
        17: .line 143
            aload 8
            athrow
        end local 5 // java.io.PrintWriter errWriter
        end local 4 // java.io.PrintWriter outWriter
        end local 3 // java.lang.String[] args
        end local 2 // java.io.PrintStream err
        end local 1 // java.io.PrintStream out
        end local 0 // java.util.spi.ToolProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Ljava/util/spi/ToolProvider;
            0   18     1        out  Ljava/io/PrintStream;
            0   18     2        err  Ljava/io/PrintStream;
            0   18     3       args  [Ljava/lang/String;
            7   18     4  outWriter  Ljava/io/PrintWriter;
            8   18     5  errWriter  Ljava/io/PrintWriter;
      Exception table:
        from    to  target  type
           8     9      12  any
           8    10      15  any
          12    15      15  any
    MethodParameters:
      Name  Flags
      out   
      err   
      args  

  public static java.util.Optional<java.util.spi.ToolProvider> findFirst(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 157
            aload 0 /* name */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 158
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
            astore 1 /* systemClassLoader */
        start local 1 // java.lang.ClassLoader systemClassLoader
         2: .line 160
            aload 1 /* systemClassLoader */
            aload 0 /* name */
            invokedynamic run(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/security/PrivilegedAction;
              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;
                  java/util/spi/ToolProvider.lambda$0(Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/util/Optional; (6 itf)
                  ()Ljava/util/Optional;
         3: .line 159
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.util.Optional
            areturn
        end local 1 // java.lang.ClassLoader systemClassLoader
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               name  Ljava/lang/String;
            2    4     1  systemClassLoader  Ljava/lang/ClassLoader;
    Signature: (Ljava/lang/String;)Ljava/util/Optional<Ljava/util/spi/ToolProvider;>;
    MethodParameters:
      Name  Flags
      name  

  private static java.util.Optional lambda$0(java.lang.ClassLoader, java.lang.String);
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/util/Optional;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=2
         0: .line 162
            ldc Ljava/util/spi/ToolProvider;
            aload 0
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
         1: .line 161
            astore 2 /* sl */
        start local 2 // java.util.ServiceLoader sl
         2: .line 163
            aload 2 /* sl */
            invokevirtual java.util.ServiceLoader.spliterator:()Ljava/util/Spliterator;
            iconst_0
            invokestatic java.util.stream.StreamSupport.stream:(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
         3: .line 164
            aload 1
            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
                  java/util/spi/ToolProvider.lambda$1(Ljava/lang/String;Ljava/util/spi/ToolProvider;)Z (6 itf)
                  (Ljava/util/spi/ToolProvider;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         4: .line 165
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
         5: .line 163
            areturn
        end local 2 // java.util.ServiceLoader sl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    6     2    sl  Ljava/util/ServiceLoader<Ljava/util/spi/ToolProvider;>;

  private static boolean lambda$1(java.lang.String, java.util.spi.ToolProvider);
    descriptor: (Ljava/lang/String;Ljava/util/spi/ToolProvider;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.util.spi.ToolProvider p
         0: .line 164
            aload 1 /* p */
            invokeinterface java.util.spi.ToolProvider.name:()Ljava/lang/String;
            aload 0
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.util.spi.ToolProvider p
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1     p  Ljava/util/spi/ToolProvider;
}
SourceFile: "ToolProvider.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles