class java.util.ServiceLoader$ProviderImpl<S> implements java.util.ServiceLoader$Provider<S>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: java.util.ServiceLoader$ProviderImpl
  super_class: java.lang.Object
{
  final java.lang.Class<S> service;
    descriptor: Ljava/lang/Class;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/lang/Class<TS;>;

  final java.lang.Class<? extends S> type;
    descriptor: Ljava/lang/Class;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/lang/Class<+TS;>;

  final java.lang.reflect.Method factoryMethod;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x0010) ACC_FINAL

  final java.lang.reflect.Constructor<? extends S> ctor;
    descriptor: Ljava/lang/reflect/Constructor;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/lang/reflect/Constructor<+TS;>;

  final java.security.AccessControlContext acc;
    descriptor: Ljava/security/AccessControlContext;
    flags: (0x0010) ACC_FINAL

  void <init>(java.lang.Class<S>, java.lang.Class<? extends S>, java.lang.reflect.Method, java.security.AccessControlContext);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/security/AccessControlContext;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // java.util.ServiceLoader$ProviderImpl this
        start local 1 // java.lang.Class service
        start local 2 // java.lang.Class type
        start local 3 // java.lang.reflect.Method factoryMethod
        start local 4 // java.security.AccessControlContext acc
         0: .line 689
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 693
            aload 0 /* this */
            aload 1 /* service */
            putfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
         2: .line 694
            aload 0 /* this */
            aload 2 /* type */
            putfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
         3: .line 695
            aload 0 /* this */
            aload 3 /* factoryMethod */
            putfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
         4: .line 696
            aload 0 /* this */
            aconst_null
            putfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
         5: .line 697
            aload 0 /* this */
            aload 4 /* acc */
            putfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
         6: .line 698
            return
        end local 4 // java.security.AccessControlContext acc
        end local 3 // java.lang.reflect.Method factoryMethod
        end local 2 // java.lang.Class type
        end local 1 // java.lang.Class service
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
            0    7     1        service  Ljava/lang/Class<TS;>;
            0    7     2           type  Ljava/lang/Class<+TS;>;
            0    7     3  factoryMethod  Ljava/lang/reflect/Method;
            0    7     4            acc  Ljava/security/AccessControlContext;
    Signature: (Ljava/lang/Class<TS;>;Ljava/lang/Class<+TS;>;Ljava/lang/reflect/Method;Ljava/security/AccessControlContext;)V
    MethodParameters:
               Name  Flags
      service        
      type           
      factoryMethod  
      acc            

  void <init>(java.lang.Class<S>, java.lang.Class<? extends S>, java.lang.reflect.Constructor<? extends S>, java.security.AccessControlContext);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/reflect/Constructor;Ljava/security/AccessControlContext;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // java.util.ServiceLoader$ProviderImpl this
        start local 1 // java.lang.Class service
        start local 2 // java.lang.Class type
        start local 3 // java.lang.reflect.Constructor ctor
        start local 4 // java.security.AccessControlContext acc
         0: .line 700
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 704
            aload 0 /* this */
            aload 1 /* service */
            putfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
         2: .line 705
            aload 0 /* this */
            aload 2 /* type */
            putfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
         3: .line 706
            aload 0 /* this */
            aconst_null
            putfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
         4: .line 707
            aload 0 /* this */
            aload 3 /* ctor */
            putfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
         5: .line 708
            aload 0 /* this */
            aload 4 /* acc */
            putfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
         6: .line 709
            return
        end local 4 // java.security.AccessControlContext acc
        end local 3 // java.lang.reflect.Constructor ctor
        end local 2 // java.lang.Class type
        end local 1 // java.lang.Class service
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
            0    7     1  service  Ljava/lang/Class<TS;>;
            0    7     2     type  Ljava/lang/Class<+TS;>;
            0    7     3     ctor  Ljava/lang/reflect/Constructor<+TS;>;
            0    7     4      acc  Ljava/security/AccessControlContext;
    Signature: (Ljava/lang/Class<TS;>;Ljava/lang/Class<+TS;>;Ljava/lang/reflect/Constructor<+TS;>;Ljava/security/AccessControlContext;)V
    MethodParameters:
         Name  Flags
      service  
      type     
      ctor     
      acc      

  public java.lang.Class<? extends S> type();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.ServiceLoader$ProviderImpl this
         0: .line 713
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
            areturn
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
    Signature: ()Ljava/lang/Class<+TS;>;

  public S get();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.ServiceLoader$ProviderImpl this
         0: .line 718
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
            ifnull 2
         1: .line 719
            aload 0 /* this */
            invokevirtual java.util.ServiceLoader$ProviderImpl.invokeFactoryMethod:()Ljava/lang/Object;
            areturn
         2: .line 721
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.util.ServiceLoader$ProviderImpl.newInstance:()Ljava/lang/Object;
            areturn
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
    Signature: ()TS;

  private S invokeFactoryMethod();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.util.ServiceLoader$ProviderImpl this
         0: .line 732
            aconst_null
            astore 1 /* result */
        start local 1 // java.lang.Object result
         1: .line 733
            aconst_null
            astore 2 /* exc */
        start local 2 // java.lang.Throwable exc
         2: .line 734
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            ifnonnull 8
         3: .line 736
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* result */
         4: .line 737
            goto 15
      StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable
      StackMap stack: java.lang.Throwable
         5: astore 3 /* x */
        start local 3 // java.lang.Throwable x
         6: .line 738
            aload 3 /* x */
            astore 2 /* exc */
        end local 3 // java.lang.Throwable x
         7: .line 740
            goto 15
         8: .line 741
      StackMap locals:
      StackMap stack:
            new java.util.ServiceLoader$ProviderImpl$1
            dup
            aload 0 /* this */
            invokespecial java.util.ServiceLoader$ProviderImpl$1.<init>:(Ljava/util/ServiceLoader$ProviderImpl;)V
            astore 3 /* pa */
        start local 3 // java.security.PrivilegedExceptionAction pa
         9: .line 749
            aload 3 /* pa */
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
            astore 1 /* result */
        10: .line 750
            goto 15
      StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable java.security.PrivilegedExceptionAction
      StackMap stack: java.lang.Throwable
        11: astore 4 /* x */
        start local 4 // java.lang.Throwable x
        12: .line 751
            aload 4 /* x */
            instanceof java.security.PrivilegedActionException
            ifeq 14
        13: .line 752
            aload 4 /* x */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 4 /* x */
        14: .line 753
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 4 /* x */
            astore 2 /* exc */
        end local 4 // java.lang.Throwable x
        end local 3 // java.security.PrivilegedExceptionAction pa
        15: .line 756
      StackMap locals:
      StackMap stack:
            aload 2 /* exc */
            ifnull 19
        16: .line 757
            aload 2 /* exc */
            instanceof java.lang.reflect.InvocationTargetException
            ifeq 18
        17: .line 758
            aload 2 /* exc */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 2 /* exc */
        18: .line 759
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " failed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* exc */
            invokestatic java.util.ServiceLoader.fail:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V
        19: .line 761
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            ifnonnull 21
        20: .line 762
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.factoryMethod:Ljava/lang/reflect/Method;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " returned null"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.util.ServiceLoader.fail:(Ljava/lang/Class;Ljava/lang/String;)V
        21: .line 765
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            astore 3 /* p */
        start local 3 // java.lang.Object p
        22: .line 766
            aload 3 /* p */
            areturn
        end local 3 // java.lang.Object p
        end local 2 // java.lang.Throwable exc
        end local 1 // java.lang.Object result
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   23     0    this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
            1   23     1  result  Ljava/lang/Object;
            2   23     2     exc  Ljava/lang/Throwable;
            6    7     3       x  Ljava/lang/Throwable;
            9   15     3      pa  Ljava/security/PrivilegedExceptionAction<*>;
           12   15     4       x  Ljava/lang/Throwable;
           22   23     3       p  TS;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Throwable
           9    10      11  Class java.lang.Throwable
    Signature: ()TS;

  private S newInstance();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.util.ServiceLoader$ProviderImpl this
         0: .line 775
            aconst_null
            astore 1 /* p */
        start local 1 // java.lang.Object p
         1: .line 776
            aconst_null
            astore 2 /* exc */
        start local 2 // java.lang.Throwable exc
         2: .line 777
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            ifnonnull 8
         3: .line 779
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 1 /* p */
         4: .line 780
            goto 15
      StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable
      StackMap stack: java.lang.Throwable
         5: astore 3 /* x */
        start local 3 // java.lang.Throwable x
         6: .line 781
            aload 3 /* x */
            astore 2 /* exc */
        end local 3 // java.lang.Throwable x
         7: .line 783
            goto 15
         8: .line 784
      StackMap locals:
      StackMap stack:
            new java.util.ServiceLoader$ProviderImpl$2
            dup
            aload 0 /* this */
            invokespecial java.util.ServiceLoader$ProviderImpl$2.<init>:(Ljava/util/ServiceLoader$ProviderImpl;)V
            astore 3 /* pa */
        start local 3 // java.security.PrivilegedExceptionAction pa
         9: .line 792
            aload 3 /* pa */
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;
            astore 1 /* p */
        10: .line 793
            goto 15
      StackMap locals: java.util.ServiceLoader$ProviderImpl java.lang.Object java.lang.Throwable java.security.PrivilegedExceptionAction
      StackMap stack: java.lang.Throwable
        11: astore 4 /* x */
        start local 4 // java.lang.Throwable x
        12: .line 794
            aload 4 /* x */
            instanceof java.security.PrivilegedActionException
            ifeq 14
        13: .line 795
            aload 4 /* x */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 4 /* x */
        14: .line 796
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 4 /* x */
            astore 2 /* exc */
        end local 4 // java.lang.Throwable x
        end local 3 // java.security.PrivilegedExceptionAction pa
        15: .line 799
      StackMap locals:
      StackMap stack:
            aload 2 /* exc */
            ifnull 22
        16: .line 800
            aload 2 /* exc */
            instanceof java.lang.reflect.InvocationTargetException
            ifeq 18
        17: .line 801
            aload 2 /* exc */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 2 /* exc */
        18: .line 802
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.ctor:Ljava/lang/reflect/Constructor;
            invokevirtual java.lang.reflect.Constructor.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 3 /* cn */
        start local 3 // java.lang.String cn
        19: .line 803
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
        20: .line 804
            new java.lang.StringBuilder
            dup
            ldc "Provider "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* cn */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " could not be instantiated"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* exc */
        21: .line 803
            invokestatic java.util.ServiceLoader.fail:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 3 // java.lang.String cn
        22: .line 806
      StackMap locals:
      StackMap stack:
            aload 1 /* p */
            areturn
        end local 2 // java.lang.Throwable exc
        end local 1 // java.lang.Object p
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   23     0  this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
            1   23     1     p  TS;
            2   23     2   exc  Ljava/lang/Throwable;
            6    7     3     x  Ljava/lang/Throwable;
            9   15     3    pa  Ljava/security/PrivilegedExceptionAction<TS;>;
           12   15     4     x  Ljava/lang/Throwable;
           19   22     3    cn  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Throwable
           9    10      11  Class java.lang.Throwable
    Signature: ()TS;

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.util.ServiceLoader$ProviderImpl this
         0: .line 815
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            aastore
            invokestatic java.util.Objects.hash:([Ljava/lang/Object;)I
            ireturn
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.util.ServiceLoader$ProviderImpl this
        start local 1 // java.lang.Object ob
         0: .line 820
            aload 1 /* ob */
            instanceof java.util.ServiceLoader$ProviderImpl
            ifne 2
         1: .line 821
            iconst_0
            ireturn
         2: .line 823
      StackMap locals:
      StackMap stack:
            aload 1 /* ob */
            checkcast java.util.ServiceLoader$ProviderImpl
            astore 2 /* that */
        start local 2 // java.util.ServiceLoader$ProviderImpl that
         3: .line 824
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
            aload 2 /* that */
            getfield java.util.ServiceLoader$ProviderImpl.service:Ljava/lang/Class;
            if_acmpne 7
         4: .line 825
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
            aload 2 /* that */
            getfield java.util.ServiceLoader$ProviderImpl.type:Ljava/lang/Class;
            if_acmpne 7
         5: .line 826
            aload 0 /* this */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            aload 2 /* that */
            getfield java.util.ServiceLoader$ProviderImpl.acc:Ljava/security/AccessControlContext;
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 7
         6: .line 824
            iconst_1
            ireturn
      StackMap locals: java.util.ServiceLoader$ProviderImpl
      StackMap stack:
         7: iconst_0
            ireturn
        end local 2 // java.util.ServiceLoader$ProviderImpl that
        end local 1 // java.lang.Object ob
        end local 0 // java.util.ServiceLoader$ProviderImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Ljava/util/ServiceLoader$ProviderImpl<TS;>;
            0    8     1    ob  Ljava/lang/Object;
            3    8     2  that  Ljava/util/ServiceLoader$ProviderImpl<*>;
    MethodParameters:
      Name  Flags
      ob    
}
Signature: <S:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/ServiceLoader$Provider<TS;>;
SourceFile: "ServiceLoader.java"
NestHost: java.util.ServiceLoader
InnerClasses:
  public abstract Provider = java.util.ServiceLoader$Provider of java.util.ServiceLoader
  private ProviderImpl = java.util.ServiceLoader$ProviderImpl of java.util.ServiceLoader
  java.util.ServiceLoader$ProviderImpl$1
  java.util.ServiceLoader$ProviderImpl$2