#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
    undefined setFormValue((File or USVString or FormData)? value,
                            optional (File or USVString or FormData)? state);
    readonly attribute HTMLFormElement? form;
    undefined setValidity(optional ValidityStateFlags flags = {},
                          optional DOMString message,
                          optional HTMLElement anchor);
    readonly attribute boolean willValidate;
    readonly attribute ValidityState validity;
    readonly attribute DOMString validationMessage;
    boolean checkValidity();
    boolean reportValidity();
    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;
};