markfisher/spring-integration — comment on commit 17431b92c6d0a823f3c21beee075083e5b3c1df2
File: spring-integration-core/src/main/java/org/springframework/integration/transformer/ContentEnricher.java line 113
By olegz:

So I am assuming this is an attempt to protect the 'immutability'. If we can we attempt to clone, otherwise we'll let it mutate.
I think we have to be realistic. Payload can get very complex and cloning could get very ugly and some times not possible and this code essentially saying that if its Clonable but clone resulted in error its over, but if its not Clonable we are always good.
We've been saying al along that Message is immutable, but the contents of the Message is a whole different story and IS user's responsibility. IN other words to me this looks just like a transformer except you are now allowing spel-configuration-based payload transformation. If user wrote a custom transformer it would be up to them if they want to create a copy of the payload or operate on the same reference and I think this should be either configurable or always operate on the same reference and if that is not good enough write your own transformer.