#import 
// https://html.spec.whatwg.org/multipage/custom-elements.html#elementinternals
[Exposed=Window]
interface ElementInternals {
    // Shadow root access
    readonly attribute ShadowRoot? shadowRoot;
    // Form-associated custom elements
    [FIXME] undefined setFormValue((File or USVString or FormData)? value,
                            optional (File or USVString or FormData)? state);
    [FIXME] readonly attribute HTMLFormElement? form;
    [FIXME] undefined setValidity(optional ValidityStateFlags flags = {},
                          optional DOMString message,
                          optional HTMLElement anchor);
    [FIXME] readonly attribute boolean willValidate;
    [FIXME] readonly attribute ValidityState validity;
    [FIXME] readonly attribute DOMString validationMessage;
    [FIXME] boolean checkValidity();
    [FIXME] boolean reportValidity();
    [FIXME] readonly attribute NodeList labels;
    // Custom state pseudo-class
    [FIXME, SameObject] readonly attribute CustomStateSet states;
};
// Accessibility semantics
// ElementInternals includes ARIAMixin;
dictionary ValidityStateFlags {
    boolean valueMissing = false;
    boolean typeMismatch = false;
    boolean patternMismatch = false;
    boolean tooLong = false;
    boolean tooShort = false;
    boolean rangeUnderflow = false;
    boolean rangeOverflow = false;
    boolean stepMismatch = false;
    boolean badInput = false;
    boolean customError = false;
};