namespace Chernobyl
{
    /// <summary>
    /// Allows an object to create a "deep" copy of itself. See 
    /// http://en.wikipedia.org/wiki/Deep_copy#Deep_copy for more information 
    /// on deep copying.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IDeepCloneable<T>
    {
        /// <summary>
        /// Creates a new instance that is a deep copy of this instance.
        /// </summary>
        /// <returns>The new shallow copied instance.</returns>
        T DeepClone();
    }
}