interface DocumentFragment : Node {

    constructor();

    Element? getElementById(DOMString id);

    // FIXME: These should all come from a ParentNode mixin
    readonly attribute Element? firstElementChild;
    readonly attribute Element? lastElementChild;
    readonly attribute unsigned long childElementCount;

    [CEReactions, Unscopable] undefined prepend((Node or DOMString)... nodes);
    [CEReactions, Unscopable] undefined append((Node or DOMString)... nodes);
    [CEReactions, Unscopable] undefined replaceChildren((Node or DOMString)... nodes);

    Element? querySelector(DOMString selectors);
    [NewObject] NodeList querySelectorAll(DOMString selectors);

    [SameObject] readonly attribute HTMLCollection children;

};
