public interface SensibleClone<T extends SensibleClone<T>>
This interface exists as a workaround for the annoyingness of java.lang.Cloneable.
It is used for generic methods which need to accept something they can actually clone
(Object.clone is protected and java.lang.Cloneable does not define a public clone method)
and want to provide some guarantees of the type of the cloned object.