public virtual Object Clone()
{
// Since we are the lowest level base class, do a
// shallow copy which will include the derived classes.
// From here we would do deep cloning of other objects
// if we had any.
return this.MemberwiseClone();
}