function collideObjects(obj1: any, obj2: any, path: string, modifiers?: ICollideModifiers): any {
    if (!isObject(obj2)) {
        throw new Error(`Unable to collide. Collide value at path ${path} is not an object.`);
    }

    if (modifiers && modifiers[path]) {
        return modifiers[path](obj1, obj2);
    }

    for (const key of Object.keys(obj2)) {
        const subPath = path + '.' + key;

        if (obj1[key] === undefined) {
            obj1[key] = obj2[key];
        } else {
            if (modifiers && modifiers[subPath]) {
                obj1[key] = modifiers[subPath](obj1[key], obj2[key]);
            } else {
                obj1[key] = collideUnsafe(obj1[key], obj2[key], modifiers, subPath);
            }
        }
    }

    return obj1;
}
NVD is only using a subset of CWE for mapping instead of the entire CWE, and the weakness type is not covered by that subset.