protected abstract IElement <TTag> Clone(ElementData data);
protected Element(IElement <TTag> element, ElementData data) { Tag = element.Tag; _data = data ?? throw new ArgumentNullException(nameof(data)); }
protected override IElement <TTag> Clone(ElementData data) => new DefaultElement <TTag>(this, data);
protected Element(TTag tag) { Tag = tag ?? throw new ArgumentNullException(nameof(tag)); _data = new ElementData(tag.Helper); }
public DefaultElement(IElement <TTag> element, ElementData data) : base(element, data) { }