Explaing pass by value and reference using primitive mutable and immutable types