(let [m {a {b 1}} c (collections/copy .m)] (put .c ["a" "b"] 2) [.m .c]) (let [m {a {b 1}} c (collections/copy .m shallow)] (put .c ["a" "b"] 2) (put .c "x" 3) [.m .c]) (let [l [1 [2]] c (collections/copy .l)] (lists/append .c 3) (lists/append (get .c 1) 4) [.l .c]) (let [s {n 1} m {a .s b .s} c (collections/copy .m)] (put .c ["a" "n"] 2) [(get .c ["b" "n"]) (get .m ["a" "n"])]) [(collections/copy 5) (collections/copy "x") (collections/copy null)] (collections/copy {a 1} deep) (collections/copy {a 1} 5) (let [m {a 1}] (put .m "self" .m) (let [c (collections/copy .m)] [(comparison/identical? (get .c "self") .c) (comparison/identical? (get .c "self") .m)]))