Sorry to be a dodo Ruben, but this brings me back to my original confusion, why does this not work then?
As opposed to pass-by-value semantics as on p 215,
void bar() { Foo f=new Foo(); doStuff(f); }
void doStuff(Foo g) { g.setName("Boo"); g=new Foo(); }
In another way to reword the book, is this assumption correct?
I cannot change any f/g member in doStuff() since it is not making a direct reference change and doing it through a setter like setName().