code: func (a *AggregateResult) Reduction(result interface{}) {
  	resultVal := reflect.ValueOf(result)
  
  	if resultVal.Kind() != reflect.Ptr || resultVal.Elem().Kind() != reflect.Slice {
  		panic("result argument must be a slice address")
  	}
  
  	sliceVal := resultVal.Elem()
  
  	elType := sliceVal.Type().Elem()
  
  	for i := range a.reduction {
  		if elType.Kind() == reflect.Ptr {
  			sliceVal = reflect.Append(sliceVal, a.reduction[i])
  		} else {
  			sliceVal = reflect.Append(sliceVal, a.reduction[i].Elem())
  		}
  	}
  
  	resultVal.Elem().Set(sliceVal.Slice(0, sliceVal.Len()))
  }
docs: // Reduction is the collection of records that are part of the AggregateResult Group