docs: private void harvestReturnValues(
          ProcedureDescriptor proc,
          Object obj,
          PreparedStatement stmt)
          throws PersistenceBrokerSQLException
      {
          // If the procedure descriptor is null or has no return values or
          // if the statement is not a callable statment, then we're done.
          if ((proc == null) || (!proc.hasReturnValues()))
          {
              return;
          }
  
          // Set up the callable statement
          CallableStatement callable = (CallableStatement) stmt;
  
          // This is the index that we'll use to harvest the return value(s).
          int index = 0;
  
          // If the proc has a return value, then try to harvest it.
          if (proc.hasReturnValue())
          {
  
              // Increment the index
              index++;
  
              // Harvest the value.
              this.harvestReturnValue(obj, callable, proc.getReturnValueFieldRef(), index);
          }
  
          // Check each argument.  If it's returned by the procedure,
          // then harvest the value.
          Iterator iter = proc.getArguments().iterator();
          while (iter.hasNext())
          {
              index++;
              ArgumentDescriptor arg = (ArgumentDescriptor) iter.next();
              if (arg.getIsReturnedByProcedure())
              {
                  this.harvestReturnValue(obj, callable, arg.getFieldRef(), index);
              }
          }
      }