code: func (c *RawBinaryClient) mutateMulti(
  	code opCode, zeroVersionIdCode opCode,
  	items []*Item) []MutateResponse {
  
  	if items == nil {
  		return nil
  	}
  
  	responses := make([]MutateResponse, len(items), len(items))
  
  	// Short-circuit function to avoid locking.
  	if len(items) == 0 {
  		return responses
  	}
  
  	c.mutex.Lock()
  	defer c.mutex.Unlock()
  
  	var itemCode opCode
  	for i, item := range items {
  		itemCode = code
  		if item.DataVersionId == 0 {
  			itemCode = zeroVersionIdCode
  		}
  		responses[i] = c.sendMutateRequest(itemCode, item, true)
  	}
  
  	for i, item := range items {
  		if responses[i] != nil { // error occurred while sending
  			continue
  		}
  		itemCode = code
  		if item.DataVersionId == 0 {
  			itemCode = zeroVersionIdCode
  		}
  		responses[i] = c.receiveMutateResponse(itemCode, item.Key)
  	}
  
  	return responses
  }
docs: // Batch version of the mutate method.  Note that the response entries
  // ordering is undefined (i.e., may not match the input ordering)
  // When DataVersionId is 0, zeroVersionIdCode is used instead of code.