mutate a copy of data without changing the original source
get and set line endings - Pull Requests welcome
handle circular references when stringifying and parsing