code: func (v replaceStrategy) doReplace(e apply.Element) (apply.Result, error) {
  
  	if result, done := v.doAddOrDelete(e); done {
  		return result, nil
  	}
  	if err := v.doConflictDetect(e); err != nil {
  		return apply.Result{}, err
  	}
  	if e.HasLocal() {
  		// Specified locally, set the local value
  		return apply.Result{Operation: apply.SET, MergedResult: e.GetLocal()}, nil
  	} else if e.HasRemote() {
  		// Not specified locally, set the remote value
  		return apply.Result{Operation: apply.SET, MergedResult: e.GetRemote()}, nil
  	} else {
  		// Only specified in the recorded, drop the field.
  		return apply.Result{Operation: apply.DROP, MergedResult: e.GetRemote()}, nil
  	}
  }
docs: // replace returns the local value if specified, otherwise it returns the remote value
  // this works regardless of the approach