public final class com.mchange.v2.c3p0.test.TestRefSerStuff
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.mchange.v2.c3p0.test.TestRefSerStuff
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mchange.v2.c3p0.test.TestRefSerStuff this
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.mchange.v2.c3p0.test.TestRefSerStuff this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mchange/v2/c3p0/test/TestRefSerStuff;

  static java.lang.String toString(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // javax.sql.DataSource ds
         0: .line 54
            aload 0 /* ds */
            instanceof com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
            ifeq 2
         1: .line 55
            aload 0 /* ds */
            checkcast com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
            iconst_1
            invokevirtual com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.toString:(Z)Ljava/lang/String;
            areturn
         2: .line 57
      StackMap locals:
      StackMap stack:
            aload 0 /* ds */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
        end local 0 // javax.sql.DataSource ds
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    ds  Ljavax/sql/DataSource;
    MethodParameters:
      Name  Flags
      ds    

  static void create(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // javax.sql.DataSource ds
         0: .line 62
            aconst_null
            astore 1 /* con */
        start local 1 // java.sql.Connection con
         1: .line 63
            aconst_null
            astore 2 /* stmt */
        start local 2 // java.sql.Statement stmt
         2: .line 66
            aload 0 /* ds */
            invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
            astore 1 /* con */
         3: .line 67
            aload 1 /* con */
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            astore 2 /* stmt */
         4: .line 68
            aload 2 /* stmt */
            ldc "CREATE TABLE TRSS_TABLE ( a_col VARCHAR(16) )"
            invokeinterface java.sql.Statement.executeUpdate:(Ljava/lang/String;)I
            pop
         5: .line 69
            goto 10
         6: .line 71
      StackMap locals: javax.sql.DataSource java.sql.Connection java.sql.Statement
      StackMap stack: java.lang.Throwable
            astore 3
         7: .line 72
            aload 2 /* stmt */
            invokestatic com.mchange.v1.db.sql.StatementUtils.attemptClose:(Ljava/sql/Statement;)Z
            pop
         8: .line 73
            aload 1 /* con */
            invokestatic com.mchange.v1.db.sql.ConnectionUtils.attemptClose:(Ljava/sql/Connection;)Z
            pop
         9: .line 74
            aload 3
            athrow
        10: .line 72
      StackMap locals:
      StackMap stack:
            aload 2 /* stmt */
            invokestatic com.mchange.v1.db.sql.StatementUtils.attemptClose:(Ljava/sql/Statement;)Z
            pop
        11: .line 73
            aload 1 /* con */
            invokestatic com.mchange.v1.db.sql.ConnectionUtils.attemptClose:(Ljava/sql/Connection;)Z
            pop
        12: .line 75
            return
        end local 2 // java.sql.Statement stmt
        end local 1 // java.sql.Connection con
        end local 0 // javax.sql.DataSource ds
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0    ds  Ljavax/sql/DataSource;
            1   13     1   con  Ljava/sql/Connection;
            2   13     2  stmt  Ljava/sql/Statement;
      Exception table:
        from    to  target  type
           2     6       6  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      ds    

  static void drop(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // javax.sql.DataSource ds
         0: .line 79
            aconst_null
            astore 1 /* con */
        start local 1 // java.sql.Connection con
         1: .line 80
            aconst_null
            astore 2 /* stmt */
        start local 2 // java.sql.Statement stmt
         2: .line 83
            aload 0 /* ds */
            invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
            astore 1 /* con */
         3: .line 84
            aload 1 /* con */
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            astore 2 /* stmt */
         4: .line 85
            aload 2 /* stmt */
            ldc "DROP TABLE TRSS_TABLE"
            invokeinterface java.sql.Statement.executeUpdate:(Ljava/lang/String;)I
            pop
         5: .line 86
            goto 10
         6: .line 88
      StackMap locals: javax.sql.DataSource java.sql.Connection java.sql.Statement
      StackMap stack: java.lang.Throwable
            astore 3
         7: .line 89
            aload 2 /* stmt */
            invokestatic com.mchange.v1.db.sql.StatementUtils.attemptClose:(Ljava/sql/Statement;)Z
            pop
         8: .line 90
            aload 1 /* con */
            invokestatic com.mchange.v1.db.sql.ConnectionUtils.attemptClose:(Ljava/sql/Connection;)Z
            pop
         9: .line 91
            aload 3
            athrow
        10: .line 89
      StackMap locals:
      StackMap stack:
            aload 2 /* stmt */
            invokestatic com.mchange.v1.db.sql.StatementUtils.attemptClose:(Ljava/sql/Statement;)Z
            pop
        11: .line 90
            aload 1 /* con */
            invokestatic com.mchange.v1.db.sql.ConnectionUtils.attemptClose:(Ljava/sql/Connection;)Z
            pop
        12: .line 92
            return
        end local 2 // java.sql.Statement stmt
        end local 1 // java.sql.Connection con
        end local 0 // javax.sql.DataSource ds
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0    ds  Ljavax/sql/DataSource;
            1   13     1   con  Ljava/sql/Connection;
            2   13     2  stmt  Ljava/sql/Statement;
      Exception table:
        from    to  target  type
           2     6       6  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      ds    

  static void doSomething(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // javax.sql.DataSource ds
         0: .line 96
            aconst_null
            astore 1 /* con */
        start local 1 // java.sql.Connection con
         1: .line 97
            aconst_null
            astore 2 /* stmt */
        start local 2 // java.sql.Statement stmt
         2: .line 100
            aload 0 /* ds */
            invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
            astore 1 /* con */
         3: .line 101
            aload 1 /* con */
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            astore 2 /* stmt */
         4: .line 102
            aload 2 /* stmt */
            new java.lang.StringBuilder
            dup
            ldc "INSERT INTO TRSS_TABLE VALUES ('"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 103
            invokestatic java.lang.System.currentTimeMillis:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc "')"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 102
            invokeinterface java.sql.Statement.executeUpdate:(Ljava/lang/String;)I
            istore 3 /* i */
        start local 3 // int i
         7: .line 104
            iload 3 /* i */
            iconst_1
            if_icmpeq 13
         8: .line 105
            new java.sql.SQLException
            dup
            ldc "Insert failed somehow strange!"
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // int i
         9: .line 108
      StackMap locals: javax.sql.DataSource java.sql.Connection java.sql.Statement
      StackMap stack: java.lang.Throwable
            astore 4
        10: .line 109
            aload 2 /* stmt */
            invokestatic com.mchange.v1.db.sql.StatementUtils.attemptClose:(Ljava/sql/Statement;)Z
            pop
        11: .line 110
            aload 1 /* con */
            invokestatic com.mchange.v1.db.sql.ConnectionUtils.attemptClose:(Ljava/sql/Connection;)Z
            pop
        12: .line 111
            aload 4
            athrow
        13: .line 109
      StackMap locals:
      StackMap stack:
            aload 2 /* stmt */
            invokestatic com.mchange.v1.db.sql.StatementUtils.attemptClose:(Ljava/sql/Statement;)Z
            pop
        14: .line 110
            aload 1 /* con */
            invokestatic com.mchange.v1.db.sql.ConnectionUtils.attemptClose:(Ljava/sql/Connection;)Z
            pop
        15: .line 112
            return
        end local 2 // java.sql.Statement stmt
        end local 1 // java.sql.Connection con
        end local 0 // javax.sql.DataSource ds
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0    ds  Ljavax/sql/DataSource;
            1   16     1   con  Ljava/sql/Connection;
            2   16     2  stmt  Ljava/sql/Statement;
            7    9     3     i  I
      Exception table:
        from    to  target  type
           2     9       9  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      ds    

  static void doTest(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // javax.sql.DataSource checkMe
         0: .line 127
            aload 0 /* checkMe */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.doSomething:(Ljavax/sql/DataSource;)V
         1: .line 128
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\tcreated:   "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* checkMe */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.toString:(Ljavax/sql/DataSource;)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 129
            aload 0 /* checkMe */
            invokestatic com.mchange.v2.ser.SerializableUtils.testSerializeDeserialize:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.sql.DataSource
            astore 1 /* afterSer */
        start local 1 // javax.sql.DataSource afterSer
         3: .line 130
            aload 1 /* afterSer */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.doSomething:(Ljavax/sql/DataSource;)V
         4: .line 131
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\tafter ser: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* afterSer */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.toString:(Ljavax/sql/DataSource;)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
         5: .line 132
            aload 0 /* checkMe */
            checkcast javax.naming.Referenceable
            invokeinterface javax.naming.Referenceable.getReference:()Ljavax/naming/Reference;
            astore 2 /* ref */
        start local 2 // javax.naming.Reference ref
         6: .line 135
            aload 2 /* ref */
         7: .line 136
            aconst_null
         8: .line 137
            aconst_null
         9: .line 138
            aconst_null
        10: .line 135
            invokestatic com.mchange.v2.naming.ReferenceableUtils.referenceToObject:(Ljavax/naming/Reference;Ljavax/naming/Name;Ljavax/naming/Context;Ljava/util/Hashtable;)Ljava/lang/Object;
            checkcast javax.sql.DataSource
            astore 3 /* afterRef */
        start local 3 // javax.sql.DataSource afterRef
        11: .line 140
            aload 3 /* afterRef */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.doSomething:(Ljavax/sql/DataSource;)V
        12: .line 141
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "\tafter ref: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* afterRef */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.toString:(Ljavax/sql/DataSource;)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
        13: .line 142
            return
        end local 3 // javax.sql.DataSource afterRef
        end local 2 // javax.naming.Reference ref
        end local 1 // javax.sql.DataSource afterSer
        end local 0 // javax.sql.DataSource checkMe
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0   checkMe  Ljavax/sql/DataSource;
            3   14     1  afterSer  Ljavax/sql/DataSource;
            6   14     2       ref  Ljavax/naming/Reference;
           11   14     3  afterRef  Ljavax/sql/DataSource;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
         Name  Flags
      checkMe  

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.lang.String[] argv
         0: .line 146
            aload 0 /* argv */
            arraylength
            ifle 5
         1: .line 148
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc Lcom/mchange/v2/c3p0/test/TestRefSerStuff;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 149
            ldc " now requires no args. Please set everything in standard c3p0 config files."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 148
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 150
            return
         5: .line 178
      StackMap locals:
      StackMap stack:
            new com.mchange.v2.c3p0.DriverManagerDataSource
            dup
            invokespecial com.mchange.v2.c3p0.DriverManagerDataSource.<init>:()V
            astore 1 /* dmds */
        start local 1 // com.mchange.v2.c3p0.DriverManagerDataSource dmds
         6: .line 182
            aload 1 /* dmds */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.drop:(Ljavax/sql/DataSource;)V
         7: goto 9
         8: .line 183
      StackMap locals: java.lang.String[] com.mchange.v2.c3p0.DriverManagerDataSource
      StackMap stack: java.lang.Exception
            pop
         9: .line 185
      StackMap locals:
      StackMap stack:
            aload 1 /* dmds */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.create:(Ljavax/sql/DataSource;)V
        10: .line 187
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "DriverManagerDataSource:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 188
            aload 1 /* dmds */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.doTest:(Ljavax/sql/DataSource;)V
        12: .line 190
            new com.mchange.v2.c3p0.WrapperConnectionPoolDataSource
            dup
            invokespecial com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.<init>:()V
            astore 2 /* wcpds */
        start local 2 // com.mchange.v2.c3p0.WrapperConnectionPoolDataSource wcpds
        13: .line 191
            aload 2 /* wcpds */
            aload 1 /* dmds */
            invokevirtual com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.setNestedDataSource:(Ljavax/sql/DataSource;)V
        14: .line 192
            new com.mchange.v2.c3p0.PoolBackedDataSource
            dup
            invokespecial com.mchange.v2.c3p0.PoolBackedDataSource.<init>:()V
            astore 3 /* pbds */
        start local 3 // com.mchange.v2.c3p0.PoolBackedDataSource pbds
        15: .line 193
            aload 3 /* pbds */
            aload 2 /* wcpds */
            invokevirtual com.mchange.v2.c3p0.PoolBackedDataSource.setConnectionPoolDataSource:(Ljavax/sql/ConnectionPoolDataSource;)V
        16: .line 195
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "PoolBackedDataSource:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        17: .line 196
            aload 3 /* pbds */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.doTest:(Ljavax/sql/DataSource;)V
        18: .line 198
            new com.mchange.v2.c3p0.ComboPooledDataSource
            dup
            invokespecial com.mchange.v2.c3p0.ComboPooledDataSource.<init>:()V
            astore 4 /* cpds */
        start local 4 // com.mchange.v2.c3p0.ComboPooledDataSource cpds
        19: .line 199
            aload 4 /* cpds */
            invokestatic com.mchange.v2.c3p0.test.TestRefSerStuff.doTest:(Ljavax/sql/DataSource;)V
        end local 4 // com.mchange.v2.c3p0.ComboPooledDataSource cpds
        end local 3 // com.mchange.v2.c3p0.PoolBackedDataSource pbds
        end local 2 // com.mchange.v2.c3p0.WrapperConnectionPoolDataSource wcpds
        end local 1 // com.mchange.v2.c3p0.DriverManagerDataSource dmds
        20: .line 200
            goto 23
        21: .line 201
      StackMap locals: java.lang.String[]
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        22: .line 202
            aload 1 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        end local 1 // java.lang.Exception e
        23: .line 203
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String[] argv
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   24     0   argv  [Ljava/lang/String;
            6   20     1   dmds  Lcom/mchange/v2/c3p0/DriverManagerDataSource;
           13   20     2  wcpds  Lcom/mchange/v2/c3p0/WrapperConnectionPoolDataSource;
           15   20     3   pbds  Lcom/mchange/v2/c3p0/PoolBackedDataSource;
           19   20     4   cpds  Lcom/mchange/v2/c3p0/ComboPooledDataSource;
           22   23     1      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           6     7       8  Class java.lang.Exception
           5    20      21  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      argv  
}
SourceFile: "TestRefSerStuff.java"