Immutable data structures for JavaScript's Array, Date, and Object objects with Copy-on-write semantics