title: Proper way to implement ICloneable
body: <p>What is the proper way of implementing <code>ICloneable</code> in a class hierarchy? Say I have an abstract class <code>DrawingObject</code>. Another abstract class <code>RectangularObject</code> inherits from <code>DrawingObject</code>. Then there are multiple concrete classes like <code>Shape</code>, <code>Text</code>, <code>Circle</code> etc. that all inherit from <code>RectangularObject</code>. I want to implement <code>ICloneable</code> on <code>DrawingObject</code> and then carry it down the hierarchy, copying available properties at each level and calling parent's <code>Clone</code> at the next level.</p>
  
  <p>The problem however is that since the first two classes are abstract, I cannot create their objects in the <code>Clone()</code> method. Thus I must duplicate the property-copying procedure in each concrete class. Or is there a better way?</p>