code: func (helper *RangeQueryResultsHelper) Done() ([]*kvrwset.KVRead, *kvrwset.QueryReadsMerkleSummary, error) {
  	// The merkle tree will be empty if total results are less than or equals to 'maxDegree'
  	// i.e., not even once the results were processed for hashing
  	if !helper.hashingEnabled || helper.mt.isEmpty() {
  		return helper.pendingResults, nil, nil
  	}
  	if len(helper.pendingResults) != 0 {
  		logger.Debug("Processing the pending results")
  		if err := helper.processPendingResults(); err != nil {
  			return helper.pendingResults, nil, err
  		}
  	}
  	helper.mt.done()
  	return helper.pendingResults, helper.mt.getSummery(), nil
  }
docs: // Done processes any pending results if needed
  // This returns the final pending results (i.e., []*KVRead) and hashes of the results (i.e., *MerkleSummary)
  // Only one of these two will be non-nil (except when no results are ever added).
  // `MerkleSummary` will be nil if and only if either `enableHashing` is set to false
  // or the number of total results are less than `maxDegree`