We start out with one object pointed to by X. Next we pass that one object to a method. We now have one object pointed to by X and N. Next we create a brand new object and have N point to it. Now we have two objects. One pointed to by N and another pointed to by X. When we get back to the result() method, X is still pointing to the original object, not the new object that N was pointing to.