def mergeItems(self, localItem, remoteItem, changeSpec):
raise ConflictError('<STR_LIT>')<EOL>
[OPTIONAL] Merges the properties of `remoteItem`, which is an item
provided by a remote peer during a synchronization, into the
`localItem`, which is an item retrieved from this agent either via
:meth:`getItem` or :meth:`matchItem`. `changeSpec` will represent
the changes applied to `localItem` since `remoteItem` was last
synchronized, or will be ``None`` when called as a result of a
slow-sync :meth:`matchItem` call.

This method should return a new change-spec (see
:meth:`replaceItem` for details) that represents the changes
applied to `localItem` from `remoteItem`.

If the items cannot be merged, then a `pysyncml.ConflictError`
should be raised with more descriptive information on what failed
during the merge --- in which case pysyncml will revert to the
conflict resolution policy defined by `store.conflictPolicy` or
`adapter.conflictPolicy`.

IMPORTANT: if the merge fails, `localItem` and `remoteItem` must
stay untouched by this call; most importantly, if the merge fails
with a ConflictError, then `remoteItem` must be in the identical
state as when it entered the call.

This method by default raises a ConflictError, which means that if
any changes are made to the same item simultaneously by two
different peers, they will result in a conflict and will not be
auto-mergeable.

See :doc:`../merging` for details.