code: func (v ElementBuildingVisitor) mergeListElement(meta apply.FieldMetaImpl, item *listItem) (*apply.ListElement, error) {
  	subtype := getSchemaType(item.Array.SubType)
  	switch subtype {
  	case "primitive":
  		return v.doPrimitiveList(meta, item)
  	case "map", "kind", "reference":
  		return v.doMapList(meta, item)
  	default:
  		return nil, fmt.Errorf("Cannot merge lists with subtype %s", subtype)
  	}
  }
docs: // Contains the heavy lifting for finding tuples of matching elements in lists based on the merge key
  // and then uses the canonical order derived from the orders in the recorded, local and remote lists.
  // replaceListElement builds a ListElement for a listItem.
  // Uses the "merge" strategy to identify "same" elements across lists by a "merge key"