class Widget { this(Widget source) { } Widget duplicate() { return new Widget(this); // Вы­де­ля­ет па­мять и вы­зы­ва­ет this(Widget) } } class TextWidget : Widget { this(TextWidget source) { super(source); } override TextWidget duplicate() { return new TextWidget(this); } } void main() { TextWidget tw; TextWidget clone = tw.duplicate(); }