docs: protected Object getCreatedOrPreparedStatementSurrogate(
              final Method method, final Object[] args) throws Throwable {
  
          WrapperInvocationHandler handler;
          Object                   stmt = null;
          StatementKey             key  = new StatementKey(method, args);
          StatementPool            pool = this.statementPool;
  
          if (pool != null) {
              stmt = pool.checkOut(key);
          }
  
          if (stmt == null) {
              stmt = method.invoke(this.delegate, args);
          }
  
          handler              = new WrapperInvocationHandler(stmt, this);
          handler.statementKey = key;
  
          if (this.statements == null) {
              this.statements = new HashSet();
          }
  
          statements.add(handler);
  
          return handler.surrogate;
      }