In reply to malathi@aceic.com:
Hence you have to call clone method using $cast.
I think you have this reversed. A $cast is needed when using clone() with derived types, but clone() is optional when using $cast. The original question was when to use that option.