@Override public Period clone() { Period newPeriod; try { newPeriod = (Period) super.clone(); } catch (final CloneNotSupportedException e) { // this should never happen, since it is Cloneable throw new InternalError(e.getMessage()); } newPeriod.begin = begin == null ? null : (Calendar) begin.clone(); newPeriod.end = end == null ? null : (Calendar) end.clone(); return newPeriod; }