public class javax.sql.rowset.spi.SyncFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.sql.rowset.spi.SyncFactory
  super_class: java.lang.Object
{
  public static final java.lang.String ROWSET_SYNC_PROVIDER;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "rowset.provider.classname"

  public static final java.lang.String ROWSET_SYNC_VENDOR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "rowset.provider.vendor"

  public static final java.lang.String ROWSET_SYNC_PROVIDER_VERSION;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "rowset.provider.version"

  private static java.lang.String ROWSET_PROPERTIES;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final java.sql.SQLPermission SET_SYNCFACTORY_PERMISSION;
    descriptor: Ljava/sql/SQLPermission;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static javax.naming.Context ic;
    descriptor: Ljavax/naming/Context;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static volatile java.util.logging.Logger rsLogger;
    descriptor: Ljava/util/logging/Logger;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private static java.util.Hashtable<java.lang.String, javax.sql.rowset.spi.SyncProvider> implementations;
    descriptor: Ljava/util/Hashtable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/Hashtable<Ljava/lang/String;Ljavax/sql/rowset/spi/SyncProvider;>;

  private static java.lang.String colon;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String strFileSep;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static boolean debug;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static int providerImplIndex;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static boolean lazyJNDICtxRefresh;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 237
            ldc "rowset.properties"
            putstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
         1: .line 243
            new java.sql.SQLPermission
            dup
            ldc "setSyncFactory"
            invokespecial java.sql.SQLPermission.<init>:(Ljava/lang/String;)V
         2: .line 242
            putstatic javax.sql.rowset.spi.SyncFactory.SET_SYNCFACTORY_PERMISSION:Ljava/sql/SQLPermission;
         3: .line 328
            ldc ":"
            putstatic javax.sql.rowset.spi.SyncFactory.colon:Ljava/lang/String;
         4: .line 329
            ldc "/"
            putstatic javax.sql.rowset.spi.SyncFactory.strFileSep:Ljava/lang/String;
         5: .line 453
            iconst_0
            putstatic javax.sql.rowset.spi.SyncFactory.debug:Z
         6: .line 458
            iconst_0
            putstatic javax.sql.rowset.spi.SyncFactory.providerImplIndex:I
         7: .line 759
            iconst_0
            putstatic javax.sql.rowset.spi.SyncFactory.lazyJNDICtxRefresh:Z
            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 // javax.sql.rowset.spi.SyncFactory this
         0: .line 213
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 214
            return
        end local 0 // javax.sql.rowset.spi.SyncFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavax/sql/rowset/spi/SyncFactory;

  public static synchronized void registerProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String providerID
         0: .line 292
            new javax.sql.rowset.spi.ProviderImpl
            dup
            invokespecial javax.sql.rowset.spi.ProviderImpl.<init>:()V
            astore 1 /* impl */
        start local 1 // javax.sql.rowset.spi.ProviderImpl impl
         1: .line 293
            aload 1 /* impl */
            aload 0 /* providerID */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setClassname:(Ljava/lang/String;)V
         2: .line 294
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         3: .line 295
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            aload 0 /* providerID */
            aload 1 /* impl */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 297
            return
        end local 1 // javax.sql.rowset.spi.ProviderImpl impl
        end local 0 // java.lang.String providerID
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0  providerID  Ljava/lang/String;
            1    5     1        impl  Ljavax/sql/rowset/spi/ProviderImpl;
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException
    MethodParameters:
            Name  Flags
      providerID  

  public static javax.sql.rowset.spi.SyncFactory getSyncFactory();
    descriptor: ()Ljavax/sql/rowset/spi/SyncFactory;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 310
            getstatic javax.sql.rowset.spi.SyncFactory$SyncFactoryHolder.factory:Ljavax/sql/rowset/spi/SyncFactory;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static synchronized void unregisterProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String providerID
         0: .line 323
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         1: .line 324
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            aload 0 /* providerID */
            invokevirtual java.util.Hashtable.containsKey:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 325
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            aload 0 /* providerID */
            invokevirtual java.util.Hashtable.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 327
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String providerID
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  providerID  Ljava/lang/String;
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException
    MethodParameters:
            Name  Flags
      providerID  

  private static synchronized void initMapIfNecessary();
    descriptor: ()V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=9, locals=5, args_size=0
         0: .line 336
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 0 /* properties */
        start local 0 // java.util.Properties properties
         1: .line 338
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            ifnonnull 59
         2: .line 339
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
         3: .line 359
            new javax.sql.rowset.spi.SyncFactory$1
            dup
            invokespecial javax.sql.rowset.spi.SyncFactory$1.<init>:()V
         4: .line 363
            aconst_null
            iconst_1
            anewarray java.security.Permission
            dup
            iconst_0
            new java.util.PropertyPermission
            dup
            ldc "rowset.properties"
            ldc "read"
            invokespecial java.util.PropertyPermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            aastore
         5: .line 359
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* strRowsetProperties */
        start local 1 // java.lang.String strRowsetProperties
         6: .line 364
            goto 10
        end local 1 // java.lang.String strRowsetProperties
      StackMap locals: java.util.Properties
      StackMap stack: java.lang.Exception
         7: astore 2 /* ex */
        start local 2 // java.lang.Exception ex
         8: .line 365
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "errorget rowset.properties: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 366
            aconst_null
            astore 1 /* strRowsetProperties */
        end local 2 // java.lang.Exception ex
        start local 1 // java.lang.String strRowsetProperties
        10: .line 369
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* strRowsetProperties */
            ifnull 22
        11: .line 372
            aload 1 /* strRowsetProperties */
            putstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
        12: .line 373
            aconst_null
            astore 2
            aconst_null
            astore 3
        13: new java.io.FileInputStream
            dup
            getstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            astore 4 /* fis */
        start local 4 // java.io.FileInputStream fis
        14: .line 374
            aload 0 /* properties */
            aload 4 /* fis */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
        15: .line 375
            aload 4 /* fis */
            ifnull 21
            aload 4 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
            goto 21
      StackMap locals: java.util.Properties java.lang.String java.lang.Throwable java.lang.Throwable java.io.FileInputStream
      StackMap stack: java.lang.Throwable
        16: astore 2
            aload 4 /* fis */
            ifnull 17
            aload 4 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
        end local 4 // java.io.FileInputStream fis
      StackMap locals:
      StackMap stack:
        17: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: astore 3
            aload 2
            ifnonnull 19
            aload 3
            astore 2
            goto 20
      StackMap locals:
      StackMap stack:
        19: aload 2
            aload 3
            if_acmpeq 20
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        20: aload 2
            athrow
        21: .line 376
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
        22: .line 382
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "javax"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic javax.sql.rowset.spi.SyncFactory.strFileSep:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "sql"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 383
            getstatic javax.sql.rowset.spi.SyncFactory.strFileSep:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "rowset"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic javax.sql.rowset.spi.SyncFactory.strFileSep:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: .line 384
            ldc "rowset.properties"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        25: .line 382
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
        26: .line 387
            aload 0 /* properties */
            invokedynamic run(Ljava/util/Properties;)Ljava/security/PrivilegedExceptionAction;
              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;
                  javax/sql/rowset/spi/SyncFactory.lambda$0(Ljava/util/Properties;)Ljava/lang/Void; (6)
                  ()Ljava/lang/Void;
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            pop
        27: .line 397
            goto 35
      StackMap locals:
      StackMap stack: java.security.PrivilegedActionException
        28: astore 2 /* ex */
        start local 2 // java.security.PrivilegedActionException ex
        29: .line 398
            aload 2 /* ex */
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            astore 3 /* e */
        start local 3 // java.lang.Throwable e
        30: .line 399
            aload 3 /* e */
            instanceof javax.sql.rowset.spi.SyncFactoryException
            ifeq 32
        31: .line 400
            aload 3 /* e */
            checkcast javax.sql.rowset.spi.SyncFactoryException
            athrow
        32: .line 402
      StackMap locals: java.security.PrivilegedActionException java.lang.Throwable
      StackMap stack:
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:()V
            astore 4 /* sfe */
        start local 4 // javax.sql.rowset.spi.SyncFactoryException sfe
        33: .line 403
            aload 4 /* sfe */
            aload 2 /* ex */
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            invokevirtual javax.sql.rowset.spi.SyncFactoryException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        34: .line 404
            aload 4 /* sfe */
            athrow
        end local 4 // javax.sql.rowset.spi.SyncFactoryException sfe
        end local 3 // java.lang.Throwable e
        end local 2 // java.security.PrivilegedActionException ex
        35: .line 408
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
        end local 1 // java.lang.String strRowsetProperties
        36: .line 412
            goto 41
      StackMap locals: java.util.Properties
      StackMap stack: java.io.FileNotFoundException
        37: astore 1 /* e */
        start local 1 // java.io.FileNotFoundException e
        38: .line 413
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot locate properties file: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.io.FileNotFoundException e
        39: .line 414
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
        40: .line 415
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "IOException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.io.IOException e
        41: .line 422
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokevirtual java.util.Properties.clear:()V
        42: .line 425
            new javax.sql.rowset.spi.SyncFactory$2
            dup
            invokespecial javax.sql.rowset.spi.SyncFactory$2.<init>:()V
        43: .line 429
            aconst_null
            iconst_1
            anewarray java.security.Permission
            dup
            iconst_0
            new java.util.PropertyPermission
            dup
            ldc "rowset.provider.classname"
            ldc "read"
            invokespecial java.util.PropertyPermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            aastore
        44: .line 425
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* providerImpls */
        start local 1 // java.lang.String providerImpls
        45: .line 430
            goto 48
        end local 1 // java.lang.String providerImpls
      StackMap locals:
      StackMap stack: java.lang.Exception
        46: pop
        47: .line 431
            aconst_null
            astore 1 /* providerImpls */
        start local 1 // java.lang.String providerImpls
        48: .line 434
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* providerImpls */
            ifnull 59
        49: .line 435
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        50: .line 436
            aload 1 /* providerImpls */
            getstatic javax.sql.rowset.spi.SyncFactory.colon:Ljava/lang/String;
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            ifle 57
        51: .line 437
            new java.util.StringTokenizer
            dup
            aload 1 /* providerImpls */
            getstatic javax.sql.rowset.spi.SyncFactory.colon:Ljava/lang/String;
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 3 /* tokenizer */
        start local 3 // java.util.StringTokenizer tokenizer
        52: .line 438
            goto 55
        53: .line 439
      StackMap locals: int java.util.StringTokenizer
      StackMap stack:
            aload 0 /* properties */
            new java.lang.StringBuilder
            dup
            ldc "rowset.provider.classname."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* tokenizer */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        54: .line 440
            iinc 2 /* i */ 1
        55: .line 438
      StackMap locals:
      StackMap stack:
            aload 3 /* tokenizer */
            invokevirtual java.util.StringTokenizer.hasMoreElements:()Z
            ifne 53
        end local 3 // java.util.StringTokenizer tokenizer
        56: .line 442
            goto 58
        57: .line 443
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            ldc "rowset.provider.classname"
            aload 1 /* providerImpls */
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        58: .line 445
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
        end local 2 // int i
        end local 1 // java.lang.String providerImpls
        59: .line 448
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.util.Properties properties
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            1   60     0           properties  Ljava/util/Properties;
            6    7     1  strRowsetProperties  Ljava/lang/String;
           10   36     1  strRowsetProperties  Ljava/lang/String;
            8   10     2                   ex  Ljava/lang/Exception;
           14   17     4                  fis  Ljava/io/FileInputStream;
           29   35     2                   ex  Ljava/security/PrivilegedActionException;
           30   35     3                    e  Ljava/lang/Throwable;
           33   35     4                  sfe  Ljavax/sql/rowset/spi/SyncFactoryException;
           38   39     1                    e  Ljava/io/FileNotFoundException;
           40   41     1                    e  Ljava/io/IOException;
           45   46     1        providerImpls  Ljava/lang/String;
           48   59     1        providerImpls  Ljava/lang/String;
           50   59     2                    i  I
           52   56     3            tokenizer  Ljava/util/StringTokenizer;
      Exception table:
        from    to  target  type
           3     6       7  Class java.lang.Exception
          14    15      16  any
          13    18      18  any
          26    27      28  Class java.security.PrivilegedActionException
           3    36      37  Class java.io.FileNotFoundException
           3    36      39  Class java.io.IOException
          42    45      46  Class java.lang.Exception
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException

  private static void parseProperties(java.util.Properties);
    descriptor: (Ljava/util/Properties;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // java.util.Properties p
         0: .line 466
            aconst_null
            astore 1 /* impl */
        start local 1 // javax.sql.rowset.spi.ProviderImpl impl
         1: .line 467
            aconst_null
            astore 2 /* key */
        start local 2 // java.lang.String key
         2: .line 468
            aconst_null
            astore 3 /* propertyNames */
        start local 3 // java.lang.String[] propertyNames
         3: .line 470
            aload 0 /* p */
            invokevirtual java.util.Properties.propertyNames:()Ljava/util/Enumeration;
            astore 4 /* e */
        start local 4 // java.util.Enumeration e
         4: goto 19
         5: .line 472
      StackMap locals: java.util.Properties javax.sql.rowset.spi.ProviderImpl java.lang.String java.lang.String[] java.util.Enumeration
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* str */
        start local 5 // java.lang.String str
         6: .line 474
            aload 5 /* str */
            invokevirtual java.lang.String.length:()I
            istore 6 /* w */
        start local 6 // int w
         7: .line 476
            aload 5 /* str */
            ldc "rowset.provider.classname"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 19
         8: .line 478
            new javax.sql.rowset.spi.ProviderImpl
            dup
            invokespecial javax.sql.rowset.spi.ProviderImpl.<init>:()V
            astore 1 /* impl */
         9: .line 479
            aload 1 /* impl */
            getstatic javax.sql.rowset.spi.SyncFactory.providerImplIndex:I
            dup
            iconst_1
            iadd
            putstatic javax.sql.rowset.spi.SyncFactory.providerImplIndex:I
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setIndex:(I)V
        10: .line 481
            iload 6 /* w */
            ldc "rowset.provider.classname"
            invokevirtual java.lang.String.length:()I
            if_icmpne 13
        11: .line 483
            iconst_0
            invokestatic javax.sql.rowset.spi.SyncFactory.getPropertyNames:(Z)[Ljava/lang/String;
            astore 3 /* propertyNames */
        12: .line 484
            goto 14
        13: .line 486
      StackMap locals: java.lang.String int
      StackMap stack:
            iconst_1
            aload 5 /* str */
            iload 6 /* w */
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic javax.sql.rowset.spi.SyncFactory.getPropertyNames:(ZLjava/lang/String;)[Ljava/lang/String;
            astore 3 /* propertyNames */
        14: .line 489
      StackMap locals:
      StackMap stack:
            aload 0 /* p */
            aload 3 /* propertyNames */
            iconst_0
            aaload
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* key */
        15: .line 490
            aload 1 /* impl */
            aload 2 /* key */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setClassname:(Ljava/lang/String;)V
        16: .line 491
            aload 1 /* impl */
            aload 0 /* p */
            aload 3 /* propertyNames */
            iconst_1
            aaload
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setVendor:(Ljava/lang/String;)V
        17: .line 492
            aload 1 /* impl */
            aload 0 /* p */
            aload 3 /* propertyNames */
            iconst_2
            aaload
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setVersion:(Ljava/lang/String;)V
        18: .line 493
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            aload 2 /* key */
            aload 1 /* impl */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // int w
        end local 5 // java.lang.String str
        19: .line 470
      StackMap locals:
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 5
        end local 4 // java.util.Enumeration e
        20: .line 496
            return
        end local 3 // java.lang.String[] propertyNames
        end local 2 // java.lang.String key
        end local 1 // javax.sql.rowset.spi.ProviderImpl impl
        end local 0 // java.util.Properties p
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0              p  Ljava/util/Properties;
            1   21     1           impl  Ljavax/sql/rowset/spi/ProviderImpl;
            2   21     2            key  Ljava/lang/String;
            3   21     3  propertyNames  [Ljava/lang/String;
            4   20     4              e  Ljava/util/Enumeration<*>;
            6   19     5            str  Ljava/lang/String;
            7   19     6              w  I
    MethodParameters:
      Name  Flags
      p     

  private static java.lang.String[] getPropertyNames(boolean);
    descriptor: (Z)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // boolean append
         0: .line 502
            iload 0 /* append */
            aconst_null
            invokestatic javax.sql.rowset.spi.SyncFactory.getPropertyNames:(ZLjava/lang/String;)[Ljava/lang/String;
            areturn
        end local 0 // boolean append
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  append  Z
    MethodParameters:
        Name  Flags
      append  

  private static java.lang.String[] getPropertyNames(boolean, java.lang.String);
    descriptor: (ZLjava/lang/String;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // boolean append
        start local 1 // java.lang.String propertyIndex
         0: .line 511
            ldc "."
            astore 2 /* dot */
        start local 2 // java.lang.String dot
         1: .line 513
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
            ldc "rowset.provider.classname"
            aastore
            dup
            iconst_1
         2: .line 514
            ldc "rowset.provider.vendor"
            aastore
            dup
            iconst_2
         3: .line 515
            ldc "rowset.provider.version"
            aastore
         4: .line 512
            astore 3 /* propertyNames */
        start local 3 // java.lang.String[] propertyNames
         5: .line 516
            iload 0 /* append */
            ifeq 15
         6: .line 517
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: goto 13
         8: .line 518
      StackMap locals: java.lang.String java.lang.String[] int
      StackMap stack:
            aload 3 /* propertyNames */
            iload 4 /* i */
            new java.lang.StringBuilder
            dup
            aload 3 /* propertyNames */
            iload 4 /* i */
            aaload
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 519
            aload 2 /* dot */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 520
            aload 1 /* propertyIndex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 518
            aastore
        12: .line 517
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 4 /* i */
            aload 3 /* propertyNames */
            arraylength
            if_icmplt 8
        end local 4 // int i
        14: .line 522
            aload 3 /* propertyNames */
            areturn
        15: .line 524
      StackMap locals:
      StackMap stack:
            aload 3 /* propertyNames */
            areturn
        end local 3 // java.lang.String[] propertyNames
        end local 2 // java.lang.String dot
        end local 1 // java.lang.String propertyIndex
        end local 0 // boolean append
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0         append  Z
            0   16     1  propertyIndex  Ljava/lang/String;
            1   16     2            dot  Ljava/lang/String;
            5   16     3  propertyNames  [Ljava/lang/String;
            7   14     4              i  I
    MethodParameters:
               Name  Flags
      append         
      propertyIndex  

  private static void showImpl(javax.sql.rowset.spi.ProviderImpl);
    descriptor: (Ljavax/sql/rowset/spi/ProviderImpl;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // javax.sql.rowset.spi.ProviderImpl impl
         0: .line 532
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Provider implementation:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 533
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Classname: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* impl */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.getClassname:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 534
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Vendor: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* impl */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.getVendor:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 535
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Version: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* impl */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.getVersion:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 536
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Impl index: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* impl */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.getIndex:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         5: .line 537
            return
        end local 0 // javax.sql.rowset.spi.ProviderImpl impl
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  impl  Ljavax/sql/rowset/spi/ProviderImpl;
    MethodParameters:
      Name  Flags
      impl  

  public static javax.sql.rowset.spi.SyncProvider getInstance(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljavax/sql/rowset/spi/SyncProvider;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.lang.String providerID
         0: .line 551
            aload 0 /* providerID */
            ifnonnull 2
         1: .line 552
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            ldc "The providerID cannot be null"
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 555
      StackMap locals:
      StackMap stack:
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         3: .line 556
            invokestatic javax.sql.rowset.spi.SyncFactory.initJNDIContext:()V
         4: .line 558
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            aload 0 /* providerID */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.sql.rowset.spi.ProviderImpl
            astore 1 /* impl */
        start local 1 // javax.sql.rowset.spi.ProviderImpl impl
         5: .line 560
            aload 1 /* impl */
            ifnonnull 7
         6: .line 562
            new com.sun.rowset.providers.RIOptimisticProvider
            dup
            invokespecial com.sun.rowset.providers.RIOptimisticProvider.<init>:()V
            areturn
         7: .line 566
      StackMap locals: javax.sql.rowset.spi.ProviderImpl
      StackMap stack:
            aload 0 /* providerID */
            invokestatic sun.reflect.misc.ReflectUtil.checkPackageAccess:(Ljava/lang/String;)V
         8: .line 567
            goto 13
      StackMap locals:
      StackMap stack: java.security.AccessControlException
         9: astore 2 /* e */
        start local 2 // java.security.AccessControlException e
        10: .line 568
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:()V
            astore 3 /* sfe */
        start local 3 // javax.sql.rowset.spi.SyncFactoryException sfe
        11: .line 569
            aload 3 /* sfe */
            aload 2 /* e */
            invokevirtual javax.sql.rowset.spi.SyncFactoryException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        12: .line 570
            aload 3 /* sfe */
            athrow
        end local 3 // javax.sql.rowset.spi.SyncFactoryException sfe
        end local 2 // java.security.AccessControlException e
        13: .line 574
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* c */
        start local 2 // java.lang.Class c
        14: .line 576
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            astore 3 /* cl */
        start local 3 // java.lang.ClassLoader cl
        15: .line 584
            aload 0 /* providerID */
            iconst_1
            aload 3 /* cl */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 2 /* c */
        16: .line 586
            aload 2 /* c */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
        17: .line 587
            aload 4 /* result */
            checkcast javax.sql.rowset.spi.SyncProvider
        18: areturn
        end local 4 // java.lang.Object result
        end local 3 // java.lang.ClassLoader cl
        19: .line 589
      StackMap locals: java.lang.String javax.sql.rowset.spi.ProviderImpl java.lang.Class
      StackMap stack: java.lang.ReflectiveOperationException
            astore 3 /* e */
        start local 3 // java.lang.ReflectiveOperationException e
        20: .line 590
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "IllegalAccessException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* e */
            invokevirtual java.lang.ReflectiveOperationException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.ReflectiveOperationException e
        end local 2 // java.lang.Class c
        end local 1 // javax.sql.rowset.spi.ProviderImpl impl
        end local 0 // java.lang.String providerID
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0  providerID  Ljava/lang/String;
            5   21     1        impl  Ljavax/sql/rowset/spi/ProviderImpl;
           10   13     2           e  Ljava/security/AccessControlException;
           11   13     3         sfe  Ljavax/sql/rowset/spi/SyncFactoryException;
           14   21     2           c  Ljava/lang/Class<*>;
           15   19     3          cl  Ljava/lang/ClassLoader;
           17   19     4      result  Ljava/lang/Object;
           20   21     3           e  Ljava/lang/ReflectiveOperationException;
      Exception table:
        from    to  target  type
           7     8       9  Class java.security.AccessControlException
          14    18      19  Class java.lang.IllegalAccessException
          14    18      19  Class java.lang.InstantiationException
          14    18      19  Class java.lang.ClassNotFoundException
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException
    MethodParameters:
            Name  Flags
      providerID  

  public static java.util.Enumeration<javax.sql.rowset.spi.SyncProvider> getRegisteredProviders();
    descriptor: ()Ljava/util/Enumeration;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 610
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         1: .line 613
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.elements:()Ljava/util/Enumeration;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException
    Signature: ()Ljava/util/Enumeration<Ljavax/sql/rowset/spi/SyncProvider;>;

  public static void setLogger(java.util.logging.Logger);
    descriptor: (Ljava/util/logging/Logger;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.logging.Logger logger
         0: .line 639
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sec */
        start local 1 // java.lang.SecurityManager sec
         1: .line 640
            aload 1 /* sec */
            ifnull 3
         2: .line 641
            aload 1 /* sec */
            getstatic javax.sql.rowset.spi.SyncFactory.SET_SYNCFACTORY_PERMISSION:Ljava/sql/SQLPermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 644
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* logger */
            ifnonnull 5
         4: .line 645
            new java.lang.NullPointerException
            dup
            ldc "You must provide a Logger"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 647
      StackMap locals:
      StackMap stack:
            aload 0 /* logger */
            putstatic javax.sql.rowset.spi.SyncFactory.rsLogger:Ljava/util/logging/Logger;
         6: .line 648
            return
        end local 1 // java.lang.SecurityManager sec
        end local 0 // java.util.logging.Logger logger
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  logger  Ljava/util/logging/Logger;
            1    7     1     sec  Ljava/lang/SecurityManager;
    MethodParameters:
        Name  Flags
      logger  

  public static void setLogger(java.util.logging.Logger, java.util.logging.Level);
    descriptor: (Ljava/util/logging/Logger;Ljava/util/logging/Level;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.util.logging.Logger logger
        start local 1 // java.util.logging.Level level
         0: .line 676
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* sec */
        start local 2 // java.lang.SecurityManager sec
         1: .line 677
            aload 2 /* sec */
            ifnull 3
         2: .line 678
            aload 2 /* sec */
            getstatic javax.sql.rowset.spi.SyncFactory.SET_SYNCFACTORY_PERMISSION:Ljava/sql/SQLPermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 681
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* logger */
            ifnonnull 5
         4: .line 682
            new java.lang.NullPointerException
            dup
            ldc "You must provide a Logger"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 684
      StackMap locals:
      StackMap stack:
            aload 0 /* logger */
            aload 1 /* level */
            invokevirtual java.util.logging.Logger.setLevel:(Ljava/util/logging/Level;)V
         6: .line 685
            aload 0 /* logger */
            putstatic javax.sql.rowset.spi.SyncFactory.rsLogger:Ljava/util/logging/Logger;
         7: .line 686
            return
        end local 2 // java.lang.SecurityManager sec
        end local 1 // java.util.logging.Level level
        end local 0 // java.util.logging.Logger logger
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  logger  Ljava/util/logging/Logger;
            0    8     1   level  Ljava/util/logging/Level;
            1    8     2     sec  Ljava/lang/SecurityManager;
    MethodParameters:
        Name  Flags
      logger  
      level   

  public static java.util.logging.Logger getLogger();
    descriptor: ()Ljava/util/logging/Logger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 697
            getstatic javax.sql.rowset.spi.SyncFactory.rsLogger:Ljava/util/logging/Logger;
            astore 0 /* result */
        start local 0 // java.util.logging.Logger result
         1: .line 699
            aload 0 /* result */
            ifnonnull 3
         2: .line 700
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            ldc "(SyncFactory) : No logger has been set"
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 703
      StackMap locals: java.util.logging.Logger
      StackMap stack:
            aload 0 /* result */
            areturn
        end local 0 // java.util.logging.Logger result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            1    4     0  result  Ljava/util/logging/Logger;
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException

  public static synchronized void setJNDIContext(javax.naming.Context);
    descriptor: (Ljavax/naming/Context;)V
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // javax.naming.Context ctx
         0: .line 726
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sec */
        start local 1 // java.lang.SecurityManager sec
         1: .line 727
            aload 1 /* sec */
            ifnull 3
         2: .line 728
            aload 1 /* sec */
            getstatic javax.sql.rowset.spi.SyncFactory.SET_SYNCFACTORY_PERMISSION:Ljava/sql/SQLPermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 730
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* ctx */
            ifnonnull 5
         4: .line 731
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            ldc "Invalid JNDI context supplied"
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 733
      StackMap locals:
      StackMap stack:
            aload 0 /* ctx */
            putstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
         6: .line 734
            return
        end local 1 // java.lang.SecurityManager sec
        end local 0 // javax.naming.Context ctx
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0   ctx  Ljavax/naming/Context;
            1    7     1   sec  Ljava/lang/SecurityManager;
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException
    MethodParameters:
      Name  Flags
      ctx   

  private static synchronized void initJNDIContext();
    descriptor: ()V
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=1, args_size=0
         0: .line 743
            getstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
            ifnull 10
            getstatic javax.sql.rowset.spi.SyncFactory.lazyJNDICtxRefresh:Z
            ifne 10
         1: .line 745
            invokestatic javax.sql.rowset.spi.SyncFactory.parseJNDIContext:()Ljava/util/Properties;
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
         2: .line 746
            iconst_1
            putstatic javax.sql.rowset.spi.SyncFactory.lazyJNDICtxRefresh:Z
         3: .line 747
            goto 10
      StackMap locals:
      StackMap stack: javax.naming.NamingException
         4: astore 0 /* e */
        start local 0 // javax.naming.NamingException e
         5: .line 748
            aload 0 /* e */
            invokevirtual javax.naming.NamingException.printStackTrace:()V
         6: .line 749
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "SPI: NamingException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* e */
            invokevirtual javax.naming.NamingException.getExplanation:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // javax.naming.NamingException e
         7: .line 750
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 0 /* e */
        start local 0 // java.lang.Exception e
         8: .line 751
            aload 0 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
         9: .line 752
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "SPI: Exception: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.Exception e
        10: .line 755
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            5    7     0     e  Ljavax/naming/NamingException;
            8   10     0     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     3       4  Class javax.naming.NamingException
           1     3       7  Class java.lang.Exception
    Exceptions:
      throws javax.sql.rowset.spi.SyncFactoryException

  private static java.util.Properties parseJNDIContext();
    descriptor: ()Ljava/util/Properties;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 767
            getstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
            ldc ""
            invokeinterface javax.naming.Context.listBindings:(Ljava/lang/String;)Ljavax/naming/NamingEnumeration;
            astore 0 /* bindings */
        start local 0 // javax.naming.NamingEnumeration bindings
         1: .line 768
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 1 /* properties */
        start local 1 // java.util.Properties properties
         2: .line 771
            aload 0 /* bindings */
            aload 1 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.enumerateBindings:(Ljavax/naming/NamingEnumeration;Ljava/util/Properties;)V
         3: .line 773
            aload 1 /* properties */
            areturn
        end local 1 // java.util.Properties properties
        end local 0 // javax.naming.NamingEnumeration bindings
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            1    4     0    bindings  Ljavax/naming/NamingEnumeration<*>;
            2    4     1  properties  Ljava/util/Properties;
    Exceptions:
      throws javax.naming.NamingException

  private static void enumerateBindings(javax.naming.NamingEnumeration<?>, java.util.Properties);
    descriptor: (Ljavax/naming/NamingEnumeration;Ljava/util/Properties;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // javax.naming.NamingEnumeration bindings
        start local 1 // java.util.Properties properties
         0: .line 785
            iconst_0
            istore 2 /* syncProviderObj */
        start local 2 // boolean syncProviderObj
         1: .line 788
            aconst_null
            astore 3 /* bd */
        start local 3 // javax.naming.Binding bd
         2: .line 789
            aconst_null
            astore 4 /* elementObj */
        start local 4 // java.lang.Object elementObj
         3: .line 790
            aconst_null
            astore 5 /* element */
        start local 5 // java.lang.String element
         4: .line 791
            goto 17
         5: .line 792
      StackMap locals: javax.naming.NamingEnumeration java.util.Properties int javax.naming.Binding java.lang.Object java.lang.String
      StackMap stack:
            aload 0 /* bindings */
            invokeinterface javax.naming.NamingEnumeration.next:()Ljava/lang/Object;
            checkcast javax.naming.Binding
            astore 3 /* bd */
         6: .line 793
            aload 3 /* bd */
            invokevirtual javax.naming.Binding.getName:()Ljava/lang/String;
            astore 5 /* element */
         7: .line 794
            aload 3 /* bd */
            invokevirtual javax.naming.Binding.getObject:()Ljava/lang/Object;
            astore 4 /* elementObj */
         8: .line 796
            getstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
            aload 5 /* element */
            invokeinterface javax.naming.Context.lookup:(Ljava/lang/String;)Ljava/lang/Object;
            instanceof javax.naming.Context
            ifne 11
         9: .line 798
            getstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
            aload 5 /* element */
            invokeinterface javax.naming.Context.lookup:(Ljava/lang/String;)Ljava/lang/Object;
            instanceof javax.sql.rowset.spi.SyncProvider
            ifeq 11
        10: .line 799
            iconst_1
            istore 2 /* syncProviderObj */
        11: .line 803
      StackMap locals:
      StackMap stack:
            iload 2 /* syncProviderObj */
            ifeq 17
        12: .line 804
            aload 4 /* elementObj */
            checkcast javax.sql.rowset.spi.SyncProvider
            astore 6 /* sync */
        start local 6 // javax.sql.rowset.spi.SyncProvider sync
        13: .line 805
            aload 1 /* properties */
            ldc "rowset.provider.classname"
        14: .line 806
            aload 6 /* sync */
            invokevirtual javax.sql.rowset.spi.SyncProvider.getProviderID:()Ljava/lang/String;
        15: .line 805
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 807
            iconst_0
            istore 2 /* syncProviderObj */
        end local 6 // javax.sql.rowset.spi.SyncProvider sync
        17: .line 791
      StackMap locals:
      StackMap stack:
            aload 0 /* bindings */
            invokeinterface javax.naming.NamingEnumeration.hasMore:()Z
            ifne 5
        end local 5 // java.lang.String element
        end local 4 // java.lang.Object elementObj
        end local 3 // javax.naming.Binding bd
        18: .line 811
            goto 22
      StackMap locals: javax.naming.NamingEnumeration java.util.Properties int
      StackMap stack: javax.naming.NotContextException
        19: pop
        20: .line 812
            aload 0 /* bindings */
            invokeinterface javax.naming.NamingEnumeration.next:()Ljava/lang/Object;
            pop
        21: .line 814
            aload 0 /* bindings */
            aload 1 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.enumerateBindings:(Ljavax/naming/NamingEnumeration;Ljava/util/Properties;)V
        22: .line 816
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean syncProviderObj
        end local 1 // java.util.Properties properties
        end local 0 // javax.naming.NamingEnumeration bindings
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   23     0         bindings  Ljavax/naming/NamingEnumeration<*>;
            0   23     1       properties  Ljava/util/Properties;
            1   23     2  syncProviderObj  Z
            2   18     3               bd  Ljavax/naming/Binding;
            3   18     4       elementObj  Ljava/lang/Object;
            4   18     5          element  Ljava/lang/String;
           13   17     6             sync  Ljavax/sql/rowset/spi/SyncProvider;
      Exception table:
        from    to  target  type
           1    18      19  Class javax.naming.NotContextException
    Exceptions:
      throws javax.naming.NamingException
    Signature: (Ljavax/naming/NamingEnumeration<*>;Ljava/util/Properties;)V
    MethodParameters:
            Name  Flags
      bindings    
      properties  

  private static java.lang.Void lambda$0(java.util.Properties);
    descriptor: (Ljava/util/Properties;)Ljava/lang/Void;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=1
         0: .line 388
            ldc Ljavax/sql/rowset/spi/SyncFactory;
            invokevirtual java.lang.Class.getModule:()Ljava/lang/Module;
            getstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
            invokevirtual java.lang.Module.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 1 /* in */
        start local 1 // java.io.InputStream in
         1: .line 389
            aload 1 /* in */
            ifnonnull 3
         2: .line 390
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Resource "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " not found"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.sql.rowset.spi.SyncFactoryException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 392
      StackMap locals: java.io.InputStream
      StackMap stack:
            aconst_null
            astore 2
            aconst_null
            astore 3
         4: .line 393
            aload 0
            aload 1 /* in */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         5: .line 392
            aload 1 /* in */
            ifnull 14
            aload 1 /* in */
         6: .line 394
            invokevirtual java.io.InputStream.close:()V
            goto 14
      StackMap locals: java.util.Properties java.io.InputStream java.lang.Throwable java.lang.Throwable
      StackMap stack: java.lang.Throwable
         7: astore 2
         8: .line 392
            aload 1 /* in */
            ifnull 10
            aload 1 /* in */
         9: .line 394
            invokevirtual java.io.InputStream.close:()V
      StackMap locals:
      StackMap stack:
        10: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 3
            aload 2
            ifnonnull 12
            aload 3
            astore 2
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 2
            aload 3
            if_acmpeq 13
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 2
            athrow
        14: .line 395
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.io.InputStream in
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1   15     1    in  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           4     5       7  any
           4    11      11  any
    Exceptions:
      throws java.lang.Exception
}
SourceFile: "SyncFactory.java"
NestMembers:
  javax.sql.rowset.spi.SyncFactory$1  javax.sql.rowset.spi.SyncFactory$2  javax.sql.rowset.spi.SyncFactory$SyncFactoryHolder
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  javax.sql.rowset.spi.SyncFactory$1
  javax.sql.rowset.spi.SyncFactory$2
  private SyncFactoryHolder = javax.sql.rowset.spi.SyncFactory$SyncFactoryHolder of javax.sql.rowset.spi.SyncFactory