- protected abstract TreeNode applyMerge(ModifiedNode modification,
- TreeNode currentMeta, Version version);
+ /**
+ * Apply a merge operation. Since the result of merge differs based on the data type
+ * being modified, implementations of this method are responsible for calling
+ * {@link ModifiedNode#resolveModificationType(ModificationType)} as appropriate.
+ *
+ * @param modification Modified node
+ * @param currentMeta Store Metadata Node on which NodeModification should be applied
+ * @param version New subtree version of parent node
+ * @return A sealed TreeNode representing applied operation.
+ */
+ protected abstract TreeNode applyMerge(ModifiedNode modification, TreeNode currentMeta, Version version);