I spent quite a while debugging a parcelable object acting weird in my application. Eventually I noticed, luckily, that an object sent via Bundle, in this case Fragment arguments, might be the exact same object I pass to it.

Consider following code snippet in which **r2** is not a copy, as I would have expected, but the same object **r** instead;

```
Rect r = new Rect();
Log.d("r", r.toString());     // Rect(0, 0 - 0, 0)
Bundle bundle = new Bundle();
bundle.putParcelable("KEY", r);
Rect r2 = bundle.getParcelable("KEY");
r2.set(100, 100, 100, 100);
Log.d("r", r.toString());     // Rect(100, 100 - 100, 100)
Log.d("r2", r2.toString());   // Rect(100, 100 - 100, 100)

```

Now the question would be is there documentation about this behaviour somewhere? I'm running into this behaviour on Android 5.1 on Nexus 5 and would be interested in knowing is this something that existed already in API 1 for example and in which situations it'll return a copy instead via creator.

I'm sure there is but I fail to find correct search keywords.