Eile tekkis vajadus objekte kloonida ning .Net-i shallow copy jäi lahjaks - vaja oli teha deep copy. .Net selleks ise häid võimalusi ei paku. Kui on vaja, siis peab kloonitav objekt järgima ICloneable interface-i ning objektile saab ise defineerida Clone() meetodi. Et klasse pole küll palju, kuid nad on suht mahukad ja keerukad, siis Clone() meetodi kirjutamine neile kõigile polnud mõttekas, vaja oli midagi muud.