public final class com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache extends com.mchange.v2.c3p0.stmt.GooGooStatementCache
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache
  super_class: com.mchange.v2.c3p0.stmt.GooGooStatementCache
{
  int max_statements;
    descriptor: I
    flags: (0x0000) 

  com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch globalDeathmarch;
    descriptor: Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
    flags: (0x0000) 

  int max_statements_per_connection;
    descriptor: I
    flags: (0x0000) 

  com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager dcsm;
    descriptor: Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$DeathmarchConnectionStatementManager;
    flags: (0x0000) 

  public void <init>(com.mchange.v2.async.AsynchronousRunner, com.mchange.v2.async.AsynchronousRunner, int, int);
    descriptor: (Lcom/mchange/v2/async/AsynchronousRunner;Lcom/mchange/v2/async/AsynchronousRunner;II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
        start local 1 // com.mchange.v2.async.AsynchronousRunner blockingTaskAsyncRunner
        start local 2 // com.mchange.v2.async.AsynchronousRunner deferredStatementDestroyer
        start local 3 // int max_statements
        start local 4 // int max_statements_per_connection
         0: .line 52
            aload 0 /* this */
            aload 1 /* blockingTaskAsyncRunner */
            aload 2 /* deferredStatementDestroyer */
            invokespecial com.mchange.v2.c3p0.stmt.GooGooStatementCache.<init>:(Lcom/mchange/v2/async/AsynchronousRunner;Lcom/mchange/v2/async/AsynchronousRunner;)V
         1: .line 45
            aload 0 /* this */
            new com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch
            dup
            aload 0 /* this */
            invokespecial com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.<init>:(Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache;)V
            putfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.globalDeathmarch:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
         2: .line 53
            aload 0 /* this */
            iload 3 /* max_statements */
            putfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.max_statements:I
         3: .line 54
            aload 0 /* this */
            iload 4 /* max_statements_per_connection */
            putfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.max_statements_per_connection:I
         4: .line 55
            return
        end local 4 // int max_statements_per_connection
        end local 3 // int max_statements
        end local 2 // com.mchange.v2.async.AsynchronousRunner deferredStatementDestroyer
        end local 1 // com.mchange.v2.async.AsynchronousRunner blockingTaskAsyncRunner
        end local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    5     0                           this  Lcom/mchange/v2/c3p0/stmt/DoubleMaxStatementCache;
            0    5     1        blockingTaskAsyncRunner  Lcom/mchange/v2/async/AsynchronousRunner;
            0    5     2     deferredStatementDestroyer  Lcom/mchange/v2/async/AsynchronousRunner;
            0    5     3                 max_statements  I
            0    5     4  max_statements_per_connection  I
    MethodParameters:
                               Name  Flags
      blockingTaskAsyncRunner        
      deferredStatementDestroyer     
      max_statements                 
      max_statements_per_connection  

  protected com.mchange.v2.c3p0.stmt.GooGooStatementCache$ConnectionStatementManager createConnectionStatementManager();
    descriptor: ()Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$ConnectionStatementManager;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
         0: .line 59
            aload 0 /* this */
            new com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager
            dup
            aload 0 /* this */
            invokespecial com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager.<init>:(Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache;)V
            dup_x1
            putfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.dcsm:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$DeathmarchConnectionStatementManager;
            areturn
        end local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mchange/v2/c3p0/stmt/DoubleMaxStatementCache;

  void addStatementToDeathmarches(java.lang.Object, java.sql.Connection);
    descriptor: (Ljava/lang/Object;Ljava/sql/Connection;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
        start local 1 // java.lang.Object pstmt
        start local 2 // java.sql.Connection physicalConnection
         0: .line 64
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.globalDeathmarch:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
            aload 1 /* pstmt */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.deathmarchStatement:(Ljava/lang/Object;)V
         1: .line 65
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.dcsm:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$DeathmarchConnectionStatementManager;
            aload 2 /* physicalConnection */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager.getDeathmarch:(Ljava/sql/Connection;)Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
            aload 1 /* pstmt */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.deathmarchStatement:(Ljava/lang/Object;)V
         2: .line 66
            return
        end local 2 // java.sql.Connection physicalConnection
        end local 1 // java.lang.Object pstmt
        end local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lcom/mchange/v2/c3p0/stmt/DoubleMaxStatementCache;
            0    3     1               pstmt  Ljava/lang/Object;
            0    3     2  physicalConnection  Ljava/sql/Connection;
    MethodParameters:
                    Name  Flags
      pstmt               
      physicalConnection  

  void removeStatementFromDeathmarches(java.lang.Object, java.sql.Connection);
    descriptor: (Ljava/lang/Object;Ljava/sql/Connection;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
        start local 1 // java.lang.Object pstmt
        start local 2 // java.sql.Connection physicalConnection
         0: .line 70
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.globalDeathmarch:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
            aload 1 /* pstmt */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.undeathmarchStatement:(Ljava/lang/Object;)V
         1: .line 71
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.dcsm:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$DeathmarchConnectionStatementManager;
            aload 2 /* physicalConnection */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager.getDeathmarch:(Ljava/sql/Connection;)Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
            aload 1 /* pstmt */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.undeathmarchStatement:(Ljava/lang/Object;)V
         2: .line 72
            return
        end local 2 // java.sql.Connection physicalConnection
        end local 1 // java.lang.Object pstmt
        end local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lcom/mchange/v2/c3p0/stmt/DoubleMaxStatementCache;
            0    3     1               pstmt  Ljava/lang/Object;
            0    3     2  physicalConnection  Ljava/sql/Connection;
    MethodParameters:
                    Name  Flags
      pstmt               
      physicalConnection  

  boolean prepareAssimilateNewStatement(java.sql.Connection);
    descriptor: (Ljava/sql/Connection;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
        start local 1 // java.sql.Connection pcon
         0: .line 76
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.dcsm:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$DeathmarchConnectionStatementManager;
            aload 1 /* pcon */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager.getNumStatementsForConnection:(Ljava/sql/Connection;)I
            istore 2 /* cxn_stmt_count */
        start local 2 // int cxn_stmt_count
         1: .line 77
            iload 2 /* cxn_stmt_count */
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.max_statements_per_connection:I
            if_icmpge 6
         2: .line 79
            aload 0 /* this */
            invokevirtual com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.countCachedStatements:()I
            istore 3 /* global_size */
        start local 3 // int global_size
         3: .line 80
            iload 3 /* global_size */
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.max_statements:I
            if_icmplt 5
            iload 3 /* global_size */
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.max_statements:I
            if_icmpne 4
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.globalDeathmarch:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.cullNext:()Z
            ifne 5
      StackMap locals: int int
      StackMap stack:
         4: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 3 // int global_size
         6: .line 83
      StackMap locals:
      StackMap stack:
            iload 2 /* cxn_stmt_count */
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.max_statements_per_connection:I
            if_icmpne 7
            aload 0 /* this */
            getfield com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache.dcsm:Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$DeathmarchConnectionStatementManager;
            aload 1 /* pcon */
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager.getDeathmarch:(Ljava/sql/Connection;)Lcom/mchange/v2/c3p0/stmt/GooGooStatementCache$Deathmarch;
            invokevirtual com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch.cullNext:()Z
            ifeq 7
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         7: iconst_0
            ireturn
        end local 2 // int cxn_stmt_count
        end local 1 // java.sql.Connection pcon
        end local 0 // com.mchange.v2.c3p0.stmt.DoubleMaxStatementCache this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/mchange/v2/c3p0/stmt/DoubleMaxStatementCache;
            0    8     1            pcon  Ljava/sql/Connection;
            1    8     2  cxn_stmt_count  I
            3    6     3     global_size  I
    MethodParameters:
      Name  Flags
      pcon  
}
SourceFile: "DoubleMaxStatementCache.java"
InnerClasses:
  protected abstract ConnectionStatementManager = com.mchange.v2.c3p0.stmt.GooGooStatementCache$ConnectionStatementManager of com.mchange.v2.c3p0.stmt.GooGooStatementCache
  protected Deathmarch = com.mchange.v2.c3p0.stmt.GooGooStatementCache$Deathmarch of com.mchange.v2.c3p0.stmt.GooGooStatementCache
  protected final DeathmarchConnectionStatementManager = com.mchange.v2.c3p0.stmt.GooGooStatementCache$DeathmarchConnectionStatementManager of com.mchange.v2.c3p0.stmt.GooGooStatementCache