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 java.lang.String default_provider;
    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.logging.Level rsLevel;
    descriptor: Ljava/util/logging/Level;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.util.Hashtable implementations;
    descriptor: Ljava/util/Hashtable;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

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

  private static java.io.PrintWriter logWriter;
    descriptor: Ljava/io/PrintWriter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  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 236
            ldc "rowset.properties"
            putstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
         1: .line 241
            ldc "com.sun.rowset.providers.RIOptimisticProvider"
         2: .line 240
            putstatic javax.sql.rowset.spi.SyncFactory.default_provider:Ljava/lang/String;
         3: .line 246
            new java.sql.SQLPermission
            dup
            ldc "setSyncFactory"
            invokespecial java.sql.SQLPermission.<init>:(Ljava/lang/String;)V
         4: .line 245
            putstatic javax.sql.rowset.spi.SyncFactory.SET_SYNCFACTORY_PERMISSION:Ljava/sql/SQLPermission;
         5: .line 269
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic javax.sql.rowset.spi.SyncFactory.logSync:Ljava/lang/Object;
         6: .line 273
            aconst_null
            putstatic javax.sql.rowset.spi.SyncFactory.logWriter:Ljava/io/PrintWriter;
         7: .line 341
            ldc ":"
            putstatic javax.sql.rowset.spi.SyncFactory.colon:Ljava/lang/String;
         8: .line 342
            ldc "/"
            putstatic javax.sql.rowset.spi.SyncFactory.strFileSep:Ljava/lang/String;
         9: .line 472
            iconst_0
            putstatic javax.sql.rowset.spi.SyncFactory.debug:Z
        10: .line 477
            iconst_0
            putstatic javax.sql.rowset.spi.SyncFactory.providerImplIndex:I
        11: .line 781
            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 212
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 213
            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 305
            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 306
            aload 1 /* impl */
            aload 0 /* providerID */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setClassname:(Ljava/lang/String;)V
         2: .line 307
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         3: .line 308
            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 310
            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 323
            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 336
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         1: .line 337
            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 338
            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 340
      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=5, locals=6, args_size=0
         0: .line 349
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 0 /* properties */
        start local 0 // java.util.Properties properties
         1: .line 351
            getstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
            ifnonnull 56
         2: .line 352
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putstatic javax.sql.rowset.spi.SyncFactory.implementations:Ljava/util/Hashtable;
         3: .line 372
            new javax.sql.rowset.spi.SyncFactory$1
            dup
            invokespecial javax.sql.rowset.spi.SyncFactory$1.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* strRowsetProperties */
        start local 1 // java.lang.String strRowsetProperties
         4: .line 377
            goto 8
        end local 1 // java.lang.String strRowsetProperties
      StackMap locals: java.util.Properties
      StackMap stack: java.lang.Exception
         5: astore 2 /* ex */
        start local 2 // java.lang.Exception ex
         6: .line 378
            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
         7: .line 379
            aconst_null
            astore 1 /* strRowsetProperties */
        end local 2 // java.lang.Exception ex
        start local 1 // java.lang.String strRowsetProperties
         8: .line 381
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* strRowsetProperties */
            ifnull 20
         9: .line 384
            aload 1 /* strRowsetProperties */
            putstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
        10: .line 385
            aconst_null
            astore 2
            aconst_null
            astore 3
        11: 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
        12: .line 386
            aload 0 /* properties */
            aload 4 /* fis */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
        13: .line 387
            aload 4 /* fis */
            ifnull 19
            aload 4 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
            goto 19
      StackMap locals: java.util.Properties java.lang.String java.lang.Throwable java.lang.Throwable java.io.FileInputStream
      StackMap stack: java.lang.Throwable
        14: astore 2
            aload 4 /* fis */
            ifnull 15
            aload 4 /* fis */
            invokevirtual java.io.FileInputStream.close:()V
        end local 4 // java.io.FileInputStream fis
      StackMap locals:
      StackMap stack:
        15: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 3
            aload 2
            ifnonnull 17
            aload 3
            astore 2
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 2
            aload 3
            if_acmpeq 18
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 2
            athrow
        19: .line 388
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
        20: .line 394
      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;
        21: .line 395
            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;
        22: .line 396
            ldc "rowset.properties"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 394
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic javax.sql.rowset.spi.SyncFactory.ROWSET_PROPERTIES:Ljava/lang/String;
        24: .line 398
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            astore 2 /* cl */
        start local 2 // java.lang.ClassLoader cl
        25: .line 401
            new javax.sql.rowset.spi.SyncFactory$2
            dup
            aload 2 /* cl */
            aload 0 /* properties */
            invokespecial javax.sql.rowset.spi.SyncFactory$2.<init>:(Ljava/lang/ClassLoader;Ljava/util/Properties;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            pop
        26: .line 416
            goto 34
      StackMap locals: java.util.Properties java.lang.String java.lang.ClassLoader
      StackMap stack: java.security.PrivilegedActionException
        27: astore 3 /* ex */
        start local 3 // java.security.PrivilegedActionException ex
        28: .line 417
            aload 3 /* ex */
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            astore 4 /* e */
        start local 4 // java.lang.Throwable e
        29: .line 418
            aload 4 /* e */
            instanceof javax.sql.rowset.spi.SyncFactoryException
            ifeq 31
        30: .line 419
            aload 4 /* e */
            checkcast javax.sql.rowset.spi.SyncFactoryException
            athrow
        31: .line 421
      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 5 /* sfe */
        start local 5 // javax.sql.rowset.spi.SyncFactoryException sfe
        32: .line 422
            aload 5 /* sfe */
            aload 3 /* ex */
            invokevirtual java.security.PrivilegedActionException.getException:()Ljava/lang/Exception;
            invokevirtual javax.sql.rowset.spi.SyncFactoryException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        33: .line 423
            aload 5 /* sfe */
            athrow
        end local 5 // javax.sql.rowset.spi.SyncFactoryException sfe
        end local 4 // java.lang.Throwable e
        end local 3 // java.security.PrivilegedActionException ex
        34: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
        end local 2 // java.lang.ClassLoader cl
        end local 1 // java.lang.String strRowsetProperties
        35: .line 431
            goto 40
      StackMap locals: java.util.Properties
      StackMap stack: java.io.FileNotFoundException
        36: astore 1 /* e */
        start local 1 // java.io.FileNotFoundException e
        37: .line 432
            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
        38: .line 433
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
        39: .line 434
            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
        40: .line 441
      StackMap locals:
      StackMap stack:
            aload 0 /* properties */
            invokevirtual java.util.Properties.clear:()V
        41: .line 444
            new javax.sql.rowset.spi.SyncFactory$3
            dup
            invokespecial javax.sql.rowset.spi.SyncFactory$3.<init>:()V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* providerImpls */
        start local 1 // java.lang.String providerImpls
        42: .line 449
            goto 45
        end local 1 // java.lang.String providerImpls
      StackMap locals:
      StackMap stack: java.lang.Exception
        43: pop
        44: .line 450
            aconst_null
            astore 1 /* providerImpls */
        start local 1 // java.lang.String providerImpls
        45: .line 453
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* providerImpls */
            ifnull 56
        46: .line 454
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        47: .line 455
            aload 1 /* providerImpls */
            getstatic javax.sql.rowset.spi.SyncFactory.colon:Ljava/lang/String;
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            ifle 54
        48: .line 456
            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
        49: .line 457
            goto 52
        50: .line 458
      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
        51: .line 459
            iinc 2 /* i */ 1
        52: .line 457
      StackMap locals:
      StackMap stack:
            aload 3 /* tokenizer */
            invokevirtual java.util.StringTokenizer.hasMoreElements:()Z
            ifne 50
        end local 3 // java.util.StringTokenizer tokenizer
        53: .line 461
            goto 55
        54: .line 462
      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
        55: .line 464
      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
        56: .line 467
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.util.Properties properties
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            1   57     0           properties  Ljava/util/Properties;
            4    5     1  strRowsetProperties  Ljava/lang/String;
            8   35     1  strRowsetProperties  Ljava/lang/String;
            6    8     2                   ex  Ljava/lang/Exception;
           12   15     4                  fis  Ljava/io/FileInputStream;
           25   35     2                   cl  Ljava/lang/ClassLoader;
           28   34     3                   ex  Ljava/security/PrivilegedActionException;
           29   34     4                    e  Ljava/lang/Throwable;
           32   34     5                  sfe  Ljavax/sql/rowset/spi/SyncFactoryException;
           37   38     1                    e  Ljava/io/FileNotFoundException;
           39   40     1                    e  Ljava/io/IOException;
           42   43     1        providerImpls  Ljava/lang/String;
           45   56     1        providerImpls  Ljava/lang/String;
           47   56     2                    i  I
           49   53     3            tokenizer  Ljava/util/StringTokenizer;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Exception
          12    13      14  any
          11    16      16  any
          25    26      27  Class java.security.PrivilegedActionException
           3    35      36  Class java.io.FileNotFoundException
           3    35      38  Class java.io.IOException
          41    42      43  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 485
            aconst_null
            astore 1 /* impl */
        start local 1 // javax.sql.rowset.spi.ProviderImpl impl
         1: .line 486
            aconst_null
            astore 2 /* key */
        start local 2 // java.lang.String key
         2: .line 487
            aconst_null
            astore 3 /* propertyNames */
        start local 3 // java.lang.String[] propertyNames
         3: .line 489
            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 491
      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 493
            aload 5 /* str */
            invokevirtual java.lang.String.length:()I
            istore 6 /* w */
        start local 6 // int w
         7: .line 495
            aload 5 /* str */
            ldc "rowset.provider.classname"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 19
         8: .line 497
            new javax.sql.rowset.spi.ProviderImpl
            dup
            invokespecial javax.sql.rowset.spi.ProviderImpl.<init>:()V
            astore 1 /* impl */
         9: .line 498
            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 500
            iload 6 /* w */
            ldc "rowset.provider.classname"
            invokevirtual java.lang.String.length:()I
            if_icmpne 13
        11: .line 502
            iconst_0
            invokestatic javax.sql.rowset.spi.SyncFactory.getPropertyNames:(Z)[Ljava/lang/String;
            astore 3 /* propertyNames */
        12: .line 503
            goto 14
        13: .line 505
      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 508
      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 509
            aload 1 /* impl */
            aload 2 /* key */
            invokevirtual javax.sql.rowset.spi.ProviderImpl.setClassname:(Ljava/lang/String;)V
        16: .line 510
            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 511
            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 512
            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 489
      StackMap locals:
      StackMap stack:
            aload 4 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 5
        end local 4 // java.util.Enumeration e
        20: .line 515
            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 521
            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 530
            ldc "."
            astore 2 /* dot */
        start local 2 // java.lang.String dot
         1: .line 532
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
            ldc "rowset.provider.classname"
            aastore
            dup
            iconst_1
         2: .line 533
            ldc "rowset.provider.vendor"
            aastore
            dup
            iconst_2
         3: .line 534
            ldc "rowset.provider.version"
            aastore
         4: .line 531
            astore 3 /* propertyNames */
        start local 3 // java.lang.String[] propertyNames
         5: .line 535
            iload 0 /* append */
            ifeq 15
         6: .line 536
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: goto 13
         8: .line 537
      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 538
            aload 2 /* dot */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 539
            aload 1 /* propertyIndex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 537
            aastore
        12: .line 536
            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 541
            aload 3 /* propertyNames */
            areturn
        15: .line 543
      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 551
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Provider implementation:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 552
            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 553
            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 554
            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 555
            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 556
            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=4, args_size=1
        start local 0 // java.lang.String providerID
         0: .line 570
            aload 0 /* providerID */
            ifnonnull 2
         1: .line 571
            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 574
      StackMap locals:
      StackMap stack:
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         3: .line 575
            invokestatic javax.sql.rowset.spi.SyncFactory.initJNDIContext:()V
         4: .line 577
            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 579
            aload 1 /* impl */
            ifnonnull 7
         6: .line 581
            new com.sun.rowset.providers.RIOptimisticProvider
            dup
            invokespecial com.sun.rowset.providers.RIOptimisticProvider.<init>:()V
            areturn
         7: .line 585
      StackMap locals: javax.sql.rowset.spi.ProviderImpl
      StackMap stack:
            aload 0 /* providerID */
            invokestatic sun.reflect.misc.ReflectUtil.checkPackageAccess:(Ljava/lang/String;)V
         8: .line 586
            goto 13
      StackMap locals:
      StackMap stack: java.security.AccessControlException
         9: astore 2 /* e */
        start local 2 // java.security.AccessControlException e
        10: .line 587
            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 588
            aload 3 /* sfe */
            aload 2 /* e */
            invokevirtual javax.sql.rowset.spi.SyncFactoryException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        12: .line 589
            aload 3 /* sfe */
            athrow
        end local 3 // javax.sql.rowset.spi.SyncFactoryException sfe
        end local 2 // java.security.AccessControlException e
        13: .line 592
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* c */
        start local 2 // java.lang.Class c
        14: .line 594
            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 602
            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 604
            aload 2 /* c */
            ifnull 19
        17: .line 605
            aload 2 /* c */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast javax.sql.rowset.spi.SyncProvider
        18: areturn
        19: .line 607
      StackMap locals: java.lang.Class java.lang.ClassLoader
      StackMap stack:
            new com.sun.rowset.providers.RIOptimisticProvider
            dup
            invokespecial com.sun.rowset.providers.RIOptimisticProvider.<init>:()V
        20: areturn
        end local 3 // java.lang.ClassLoader cl
        21: .line 610
      StackMap locals: java.lang.String javax.sql.rowset.spi.ProviderImpl java.lang.Class
      StackMap stack: java.lang.IllegalAccessException
            astore 3 /* e */
        start local 3 // java.lang.IllegalAccessException e
        22: .line 611
            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.IllegalAccessException.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.IllegalAccessException e
        23: .line 612
      StackMap locals:
      StackMap stack: java.lang.InstantiationException
            astore 3 /* e */
        start local 3 // java.lang.InstantiationException e
        24: .line 613
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "InstantiationException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* e */
            invokevirtual java.lang.InstantiationException.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.InstantiationException e
        25: .line 614
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 3 /* e */
        start local 3 // java.lang.ClassNotFoundException e
        26: .line 615
            new javax.sql.rowset.spi.SyncFactoryException
            dup
            new java.lang.StringBuilder
            dup
            ldc "ClassNotFoundException: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* e */
            invokevirtual java.lang.ClassNotFoundException.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.ClassNotFoundException 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   27     0  providerID  Ljava/lang/String;
            5   27     1        impl  Ljavax/sql/rowset/spi/ProviderImpl;
           10   13     2           e  Ljava/security/AccessControlException;
           11   13     3         sfe  Ljavax/sql/rowset/spi/SyncFactoryException;
           14   27     2           c  Ljava/lang/Class;
           15   21     3          cl  Ljava/lang/ClassLoader;
           22   23     3           e  Ljava/lang/IllegalAccessException;
           24   25     3           e  Ljava/lang/InstantiationException;
           26   27     3           e  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           7     8       9  Class java.security.AccessControlException
          14    18      21  Class java.lang.IllegalAccessException
          19    20      21  Class java.lang.IllegalAccessException
          14    18      23  Class java.lang.InstantiationException
          19    20      23  Class java.lang.InstantiationException
          14    18      25  Class java.lang.ClassNotFoundException
          19    20      25  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 633
            invokestatic javax.sql.rowset.spi.SyncFactory.initMapIfNecessary:()V
         1: .line 636
            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 662
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sec */
        start local 1 // java.lang.SecurityManager sec
         1: .line 663
            aload 1 /* sec */
            ifnull 3
         2: .line 664
            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 667
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* logger */
            ifnonnull 5
         4: .line 668
            new java.lang.NullPointerException
            dup
            ldc "You must provide a Logger"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 670
      StackMap locals:
      StackMap stack:
            aload 0 /* logger */
            putstatic javax.sql.rowset.spi.SyncFactory.rsLogger:Ljava/util/logging/Logger;
         6: .line 671
            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 699
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* sec */
        start local 2 // java.lang.SecurityManager sec
         1: .line 700
            aload 2 /* sec */
            ifnull 3
         2: .line 701
            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 704
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* logger */
            ifnonnull 5
         4: .line 705
            new java.lang.NullPointerException
            dup
            ldc "You must provide a Logger"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 707
      StackMap locals:
      StackMap stack:
            aload 0 /* logger */
            aload 1 /* level */
            invokevirtual java.util.logging.Logger.setLevel:(Ljava/util/logging/Level;)V
         6: .line 708
            aload 0 /* logger */
            putstatic javax.sql.rowset.spi.SyncFactory.rsLogger:Ljava/util/logging/Logger;
         7: .line 709
            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 719
            getstatic javax.sql.rowset.spi.SyncFactory.rsLogger:Ljava/util/logging/Logger;
            astore 0 /* result */
        start local 0 // java.util.logging.Logger result
         1: .line 721
            aload 0 /* result */
            ifnonnull 3
         2: .line 722
            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 725
      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 748
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 1 /* sec */
        start local 1 // java.lang.SecurityManager sec
         1: .line 749
            aload 1 /* sec */
            ifnull 3
         2: .line 750
            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 752
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 0 /* ctx */
            ifnonnull 5
         4: .line 753
            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 755
      StackMap locals:
      StackMap stack:
            aload 0 /* ctx */
            putstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
         6: .line 756
            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 765
            getstatic javax.sql.rowset.spi.SyncFactory.ic:Ljavax/naming/Context;
            ifnull 10
            getstatic javax.sql.rowset.spi.SyncFactory.lazyJNDICtxRefresh:Z
            ifne 10
         1: .line 767
            invokestatic javax.sql.rowset.spi.SyncFactory.parseJNDIContext:()Ljava/util/Properties;
            invokestatic javax.sql.rowset.spi.SyncFactory.parseProperties:(Ljava/util/Properties;)V
         2: .line 768
            iconst_1
            putstatic javax.sql.rowset.spi.SyncFactory.lazyJNDICtxRefresh:Z
         3: .line 769
            goto 10
      StackMap locals:
      StackMap stack: javax.naming.NamingException
         4: astore 0 /* e */
        start local 0 // javax.naming.NamingException e
         5: .line 770
            aload 0 /* e */
            invokevirtual javax.naming.NamingException.printStackTrace:()V
         6: .line 771
            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 772
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 0 /* e */
        start local 0 // java.lang.Exception e
         8: .line 773
            aload 0 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
         9: .line 774
            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 777
      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 789
            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 790
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 1 /* properties */
        start local 1 // java.util.Properties properties
         2: .line 793
            aload 0 /* bindings */
            aload 1 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.enumerateBindings:(Ljavax/naming/NamingEnumeration;Ljava/util/Properties;)V
         3: .line 795
            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 807
            iconst_0
            istore 2 /* syncProviderObj */
        start local 2 // boolean syncProviderObj
         1: .line 810
            aconst_null
            astore 3 /* bd */
        start local 3 // javax.naming.Binding bd
         2: .line 811
            aconst_null
            astore 4 /* elementObj */
        start local 4 // java.lang.Object elementObj
         3: .line 812
            aconst_null
            astore 5 /* element */
        start local 5 // java.lang.String element
         4: .line 813
            goto 17
         5: .line 814
      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 815
            aload 3 /* bd */
            invokevirtual javax.naming.Binding.getName:()Ljava/lang/String;
            astore 5 /* element */
         7: .line 816
            aload 3 /* bd */
            invokevirtual javax.naming.Binding.getObject:()Ljava/lang/Object;
            astore 4 /* elementObj */
         8: .line 818
            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 820
            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 821
            iconst_1
            istore 2 /* syncProviderObj */
        11: .line 825
      StackMap locals:
      StackMap stack:
            iload 2 /* syncProviderObj */
            ifeq 17
        12: .line 826
            aload 4 /* elementObj */
            checkcast javax.sql.rowset.spi.SyncProvider
            astore 6 /* sync */
        start local 6 // javax.sql.rowset.spi.SyncProvider sync
        13: .line 827
            aload 1 /* properties */
            ldc "rowset.provider.classname"
        14: .line 828
            aload 6 /* sync */
            invokevirtual javax.sql.rowset.spi.SyncProvider.getProviderID:()Ljava/lang/String;
        15: .line 827
            invokevirtual java.util.Properties.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 829
            iconst_0
            istore 2 /* syncProviderObj */
        end local 6 // javax.sql.rowset.spi.SyncProvider sync
        17: .line 813
      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 833
            goto 22
      StackMap locals: javax.naming.NamingEnumeration java.util.Properties int
      StackMap stack: javax.naming.NotContextException
        19: pop
        20: .line 834
            aload 0 /* bindings */
            invokeinterface javax.naming.NamingEnumeration.next:()Ljava/lang/Object;
            pop
        21: .line 836
            aload 0 /* bindings */
            aload 1 /* properties */
            invokestatic javax.sql.rowset.spi.SyncFactory.enumerateBindings:(Ljavax/naming/NamingEnumeration;Ljava/util/Properties;)V
        22: .line 838
      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
    MethodParameters:
            Name  Flags
      bindings    
      properties  
}
SourceFile: "SyncFactory.java"
NestMembers:
  javax.sql.rowset.spi.SyncFactory$1  javax.sql.rowset.spi.SyncFactory$2  javax.sql.rowset.spi.SyncFactory$3  javax.sql.rowset.spi.SyncFactory$SyncFactoryHolder
InnerClasses:
  javax.sql.rowset.spi.SyncFactory$1
  javax.sql.rowset.spi.SyncFactory$2
  javax.sql.rowset.spi.SyncFactory$3
  private SyncFactoryHolder = javax.sql.rowset.spi.SyncFactory$SyncFactoryHolder of javax.sql.rowset.spi.SyncFactory