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);
    }
}
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
Merge a single property