mergeDeepRecursively deep merges two objects, with properties from the source object overwriting those from the target object. Supports symbol keys and preserves property descriptors. Arrays are merged by index.
target (T extends object): The target object to receive properties.source (U extends object): The source object to copy properties from.T & U): A new object with deeply merged properties.