title: Update immutable object without breaking immutability
body: <p>how can I get updated immutable object from another immutable object without breaking the immutability in a good way. Something similar to how things are achieved in Scala or how they are achieved in Immutables library. </p>
  
  <p>How can I achieve something like
   Customer.Builder.from(anotherCustomer).replaceOrder(oldOrder,newOrder).with(newName).build()</p>
  
  <p>To reuse the old objects and queue all the changes I want in order to construct a new one.</p>
  
  <p>I am using Java.</p>