Calendar roll affects other calendar
<p>I have a piece of code I dont quite understand. Its causing a bug.</p>

<p>There's a Calendar object and a method which writes this calendar object to a string, but increments the year first. however, even though there are 2 Calendar objects, they are both being rolled.  </p>

<p>See the method that does the roll below  </p>

<pre><code>public static synchronized Calendar rollDatePlus1Year(Calendar currentDate){
    Calendar rtn = currentDate;
    rtn.roll(Calendar.YEAR, 1);
    rtn.roll(Calendar.MINUTE, -1);
    return rtn;
}
</code></pre>

<p>from this both "currentDate" and "rtn" are incremented by a year. This method should not change any values, but return a new represenation.</p>

<p>Any ideas?</p>
