https://monodes.com/predaelli/2018/12/17/how-to-differentiate-between-deep-and-shallow-copies-in-javascript/
How to differentiate between deep and shallow copies in JavaScript