public class java.rmi.server.RMIClassLoader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.rmi.server.RMIClassLoader
  super_class: java.lang.Object
{
  private static final java.rmi.server.RMIClassLoaderSpi defaultProvider;
    descriptor: Ljava/rmi/server/RMIClassLoaderSpi;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.rmi.server.RMIClassLoaderSpi provider;
    descriptor: Ljava/rmi/server/RMIClassLoaderSpi;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 114
            invokestatic java.rmi.server.RMIClassLoader.newDefaultProviderInstance:()Ljava/rmi/server/RMIClassLoaderSpi;
         1: .line 113
            putstatic java.rmi.server.RMIClassLoader.defaultProvider:Ljava/rmi/server/RMIClassLoaderSpi;
         2: .line 119
            new java.rmi.server.RMIClassLoader$1
            dup
            invokespecial java.rmi.server.RMIClassLoader$1.<init>:()V
         3: .line 118
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.rmi.server.RMIClassLoaderSpi
         4: .line 117
            putstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
         5: .line 121
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.rmi.server.RMIClassLoader this
         0: .line 126
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // java.rmi.server.RMIClassLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/rmi/server/RMIClassLoader;

  public static java.lang.Class<?> loadClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String name
         0: .line 152
            aconst_null
            aload 0 /* name */
            invokestatic java.rmi.server.RMIClassLoader.loadClass:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;
            areturn
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  name  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException, java.lang.ClassNotFoundException
    Signature: (Ljava/lang/String;)Ljava/lang/Class<*>;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      name  

  public static java.lang.Class<?> loadClass(java.net.URL, java.lang.String);
    descriptor: (Ljava/net/URL;Ljava/lang/String;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.net.URL codebase
        start local 1 // java.lang.String name
         0: .line 186
            getstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
         1: .line 187
            aload 0 /* codebase */
            ifnull 2
            aload 0 /* codebase */
            invokevirtual java.net.URL.toString:()Ljava/lang/String;
            goto 3
      StackMap locals:
      StackMap stack: java.rmi.server.RMIClassLoaderSpi
         2: aconst_null
      StackMap locals: java.net.URL java.lang.String
      StackMap stack: java.rmi.server.RMIClassLoaderSpi java.lang.String
         3: aload 1 /* name */
            aconst_null
         4: .line 186
            invokevirtual java.rmi.server.RMIClassLoaderSpi.loadClass:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
            areturn
        end local 1 // java.lang.String name
        end local 0 // java.net.URL codebase
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0  codebase  Ljava/net/URL;
            0    5     1      name  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException, java.lang.ClassNotFoundException
    Signature: (Ljava/net/URL;Ljava/lang/String;)Ljava/lang/Class<*>;
    MethodParameters:
          Name  Flags
      codebase  
      name      

  public static java.lang.Class<?> loadClass(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String codebase
        start local 1 // java.lang.String name
         0: .line 219
            getstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
            aload 0 /* codebase */
            aload 1 /* name */
            aconst_null
            invokevirtual java.rmi.server.RMIClassLoaderSpi.loadClass:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
            areturn
        end local 1 // java.lang.String name
        end local 0 // java.lang.String codebase
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  codebase  Ljava/lang/String;
            0    1     1      name  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException, java.lang.ClassNotFoundException
    Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class<*>;
    MethodParameters:
          Name  Flags
      codebase  
      name      

  public static java.lang.Class<?> loadClass(java.lang.String, java.lang.String, java.lang.ClassLoader);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.lang.String codebase
        start local 1 // java.lang.String name
        start local 2 // java.lang.ClassLoader defaultLoader
         0: .line 264
            getstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
            aload 0 /* codebase */
            aload 1 /* name */
            aload 2 /* defaultLoader */
            invokevirtual java.rmi.server.RMIClassLoaderSpi.loadClass:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
            areturn
        end local 2 // java.lang.ClassLoader defaultLoader
        end local 1 // java.lang.String name
        end local 0 // java.lang.String codebase
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0       codebase  Ljava/lang/String;
            0    1     1           name  Ljava/lang/String;
            0    1     2  defaultLoader  Ljava/lang/ClassLoader;
    Exceptions:
      throws java.net.MalformedURLException, java.lang.ClassNotFoundException
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class<*>;
    MethodParameters:
               Name  Flags
      codebase       
      name           
      defaultLoader  

  public static java.lang.Class<?> loadProxyClass(java.lang.String, java.lang.String[], java.lang.ClassLoader);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.lang.String codebase
        start local 1 // java.lang.String[] interfaces
        start local 2 // java.lang.ClassLoader defaultLoader
         0: .line 311
            getstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
            aload 0 /* codebase */
            aload 1 /* interfaces */
            aload 2 /* defaultLoader */
            invokevirtual java.rmi.server.RMIClassLoaderSpi.loadProxyClass:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
            areturn
        end local 2 // java.lang.ClassLoader defaultLoader
        end local 1 // java.lang.String[] interfaces
        end local 0 // java.lang.String codebase
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0       codebase  Ljava/lang/String;
            0    1     1     interfaces  [Ljava/lang/String;
            0    1     2  defaultLoader  Ljava/lang/ClassLoader;
    Exceptions:
      throws java.lang.ClassNotFoundException, java.net.MalformedURLException
    Signature: (Ljava/lang/String;[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class<*>;
    MethodParameters:
               Name  Flags
      codebase       
      interfaces     
      defaultLoader  

  public static java.lang.ClassLoader getClassLoader(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/ClassLoader;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String codebase
         0: .line 355
            getstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
            aload 0 /* codebase */
            invokevirtual java.rmi.server.RMIClassLoaderSpi.getClassLoader:(Ljava/lang/String;)Ljava/lang/ClassLoader;
            areturn
        end local 0 // java.lang.String codebase
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  codebase  Ljava/lang/String;
    Exceptions:
      throws java.net.MalformedURLException, java.lang.SecurityException
    MethodParameters:
          Name  Flags
      codebase  

  public static java.lang.String getClassAnnotation(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class cl
         0: .line 381
            getstatic java.rmi.server.RMIClassLoader.provider:Ljava/rmi/server/RMIClassLoaderSpi;
            aload 0 /* cl */
            invokevirtual java.rmi.server.RMIClassLoaderSpi.getClassAnnotation:(Ljava/lang/Class;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.Class cl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    cl  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/String;
    MethodParameters:
      Name  Flags
      cl    

  public static java.rmi.server.RMIClassLoaderSpi getDefaultProviderInstance();
    descriptor: ()Ljava/rmi/server/RMIClassLoaderSpi;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 604
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 0 /* sm */
        start local 0 // java.lang.SecurityManager sm
         1: .line 605
            aload 0 /* sm */
            ifnull 3
         2: .line 606
            aload 0 /* sm */
            new java.lang.RuntimePermission
            dup
            ldc "setFactory"
            invokespecial java.lang.RuntimePermission.<init>:(Ljava/lang/String;)V
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 608
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            getstatic java.rmi.server.RMIClassLoader.defaultProvider:Ljava/rmi/server/RMIClassLoaderSpi;
            areturn
        end local 0 // java.lang.SecurityManager sm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0    sm  Ljava/lang/SecurityManager;

  public static java.lang.Object getSecurityContext(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ClassLoader loader
         0: .line 625
            aload 0 /* loader */
            invokestatic sun.rmi.server.LoaderHandler.getSecurityContext:(Ljava/lang/ClassLoader;)Ljava/lang/Object;
            areturn
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  loader  Ljava/lang/ClassLoader;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
        Name  Flags
      loader  

  private static java.rmi.server.RMIClassLoaderSpi newDefaultProviderInstance();
    descriptor: ()Ljava/rmi/server/RMIClassLoaderSpi;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 632
            new java.rmi.server.RMIClassLoader$2
            dup
            invokespecial java.rmi.server.RMIClassLoader$2.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.rmi.server.RMIClassLoaderSpi initializeProvider();
    descriptor: ()Ljava/rmi/server/RMIClassLoaderSpi;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=0
         0: .line 672
            ldc "java.rmi.server.RMIClassLoaderSpi"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
         1: .line 671
            astore 0 /* providerClassName */
        start local 0 // java.lang.String providerClassName
         2: .line 674
            aload 0 /* providerClassName */
            ifnull 24
         3: .line 675
            aload 0 /* providerClassName */
            ldc "default"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 676
            getstatic java.rmi.server.RMIClassLoader.defaultProvider:Ljava/rmi/server/RMIClassLoaderSpi;
            areturn
         5: .line 681
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* providerClassName */
            iconst_0
         6: .line 682
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
         7: .line 681
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
         8: .line 683
            ldc Ljava/rmi/server/RMIClassLoaderSpi;
            invokevirtual java.lang.Class.asSubclass:(Ljava/lang/Class;)Ljava/lang/Class;
         9: .line 680
            astore 1 /* providerClass */
        start local 1 // java.lang.Class providerClass
        10: .line 684
            aload 1 /* providerClass */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast java.rmi.server.RMIClassLoaderSpi
        11: areturn
        end local 1 // java.lang.Class providerClass
        12: .line 686
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 1 /* e */
        start local 1 // java.lang.ClassNotFoundException e
        13: .line 687
            new java.lang.NoClassDefFoundError
            dup
            aload 1 /* e */
            invokevirtual java.lang.ClassNotFoundException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.NoClassDefFoundError.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.ClassNotFoundException e
        14: .line 688
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            astore 1 /* e */
        start local 1 // java.lang.IllegalAccessException e
        15: .line 689
            new java.lang.IllegalAccessError
            dup
            aload 1 /* e */
            invokevirtual java.lang.IllegalAccessException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.IllegalAccessError.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.IllegalAccessException e
        16: .line 690
      StackMap locals:
      StackMap stack: java.lang.InstantiationException
            astore 1 /* e */
        start local 1 // java.lang.InstantiationException e
        17: .line 691
            new java.lang.InstantiationError
            dup
            aload 1 /* e */
            invokevirtual java.lang.InstantiationException.getMessage:()Ljava/lang/String;
            invokespecial java.lang.InstantiationError.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.InstantiationException e
        18: .line 692
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
            astore 1 /* e */
        start local 1 // java.lang.ClassCastException e
        19: .line 693
            new java.lang.LinkageError
            dup
        20: .line 694
            ldc "provider class not assignable to RMIClassLoaderSpi"
        21: .line 693
            invokespecial java.lang.LinkageError.<init>:(Ljava/lang/String;)V
            astore 2 /* error */
        start local 2 // java.lang.Error error
        22: .line 695
            aload 2 /* error */
            aload 1 /* e */
            invokevirtual java.lang.Error.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        23: .line 696
            aload 2 /* error */
            athrow
        end local 2 // java.lang.Error error
        end local 1 // java.lang.ClassCastException e
        24: .line 704
      StackMap locals:
      StackMap stack:
            ldc Ljava/rmi/server/RMIClassLoaderSpi;
        25: .line 705
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
        26: .line 704
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
        27: .line 705
            invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
        28: .line 703
            astore 1 /* iter */
        start local 1 // java.util.Iterator iter
        29: .line 706
            aload 1 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 38
        30: .line 708
            aload 1 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.rmi.server.RMIClassLoaderSpi
        31: areturn
        32: .line 709
      StackMap locals: java.lang.String java.util.Iterator
      StackMap stack: java.lang.ClassCastException
            astore 2 /* e */
        start local 2 // java.lang.ClassCastException e
        33: .line 710
            new java.lang.LinkageError
            dup
        34: .line 711
            ldc "provider class not assignable to RMIClassLoaderSpi"
        35: .line 710
            invokespecial java.lang.LinkageError.<init>:(Ljava/lang/String;)V
            astore 3 /* error */
        start local 3 // java.lang.Error error
        36: .line 712
            aload 3 /* error */
            aload 2 /* e */
            invokevirtual java.lang.Error.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        37: .line 713
            aload 3 /* error */
            athrow
        end local 3 // java.lang.Error error
        end local 2 // java.lang.ClassCastException e
        38: .line 720
      StackMap locals:
      StackMap stack:
            getstatic java.rmi.server.RMIClassLoader.defaultProvider:Ljava/rmi/server/RMIClassLoaderSpi;
            areturn
        end local 1 // java.util.Iterator iter
        end local 0 // java.lang.String providerClassName
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            2   39     0  providerClassName  Ljava/lang/String;
           10   12     1      providerClass  Ljava/lang/Class<+Ljava/rmi/server/RMIClassLoaderSpi;>;
           13   14     1                  e  Ljava/lang/ClassNotFoundException;
           15   16     1                  e  Ljava/lang/IllegalAccessException;
           17   18     1                  e  Ljava/lang/InstantiationException;
           19   24     1                  e  Ljava/lang/ClassCastException;
           22   24     2              error  Ljava/lang/Error;
           29   39     1               iter  Ljava/util/Iterator<Ljava/rmi/server/RMIClassLoaderSpi;>;
           33   38     2                  e  Ljava/lang/ClassCastException;
           36   38     3              error  Ljava/lang/Error;
      Exception table:
        from    to  target  type
           5    11      12  Class java.lang.ClassNotFoundException
           5    11      14  Class java.lang.IllegalAccessException
           5    11      16  Class java.lang.InstantiationException
           5    11      18  Class java.lang.ClassCastException
          30    31      32  Class java.lang.ClassCastException
}
SourceFile: "RMIClassLoader.java"
NestMembers:
  java.rmi.server.RMIClassLoader$1  java.rmi.server.RMIClassLoader$2
InnerClasses:
  java.rmi.server.RMIClassLoader$1
  java.rmi.server.RMIClassLoader$2