Curiously-recurring generic interface indicating that the implementing type is capable of copying data from other instances of the same type.
Because the curiously-recurring pattern requires the concrete type to be known in order to express the interface (i.e., ICopyFrom<Foo> cannot be written without knowledge of the type Foo), this interface is only used within other generic types where TSelfType is in turn generic. For a canonical example, see DataModifier<TData>.