docs: public ClientResponseImpl call(Object... paramListIn) {
          m_perCallStats = m_statsCollector.beginProcedure();
  
          // if we're keeping track, calculate parameter size
          if (m_perCallStats != null) {
              StoredProcedureInvocation invoc = (m_txnState != null ? m_txnState.getInvocation() : null);
              ParameterSet params = (invoc != null ? invoc.getParams() : ParameterSet.fromArrayNoCopy(paramListIn));
              m_perCallStats.setParameterSize(params.getSerializedSize());
          }
  
          ClientResponseImpl result = coreCall(paramListIn);
  
          // if we're keeping track, calculate result size
          if (m_perCallStats != null) {
              m_perCallStats.setResultSize(result.getResults());
          }
  
          m_statsCollector.endProcedure(result.getStatus() == ClientResponse.USER_ABORT,
                                        (result.getStatus() != ClientResponse.USER_ABORT) &&
                                        (result.getStatus() != ClientResponse.SUCCESS),
                                        m_perCallStats);
          // allow the GC to collect per-call stats if this proc isn't called for a while
          m_perCallStats = null;
  
          return result;
      }