js/utils/common.js
function mergeProperty(destination, source, property) {
    if (source[property] instanceof Array) {
        mergeAsArray(destination, source, property);
    }
    else if (isPrimitive(source[property]) || !isLiteral(source[property])) {
        overrideIfNotExists(destination, source, property);
    }
    else {
        mergeAsObject(destination, source, property);
    }
}
function mergeProperty(destination, source, property) {
    if (source[property] instanceof Array) {
        mergeAsArray(destination, source, property);
    }
    else if (isPrimitive(source[property]) || !isLiteral(source[property])) {
        overrideIfNotExists(destination, source, property);
    }
    else {
        mergeAsObject(destination, source, property);
    }
}
Merge a single property

Arrays are concatenated, primitives taken from the source if not
defined and complex object merged recursively

@param {Object} destination
@param {Object} source
@param {String} property