[Exposed=Window]
partial interface CustomElementRegistry {
  constructor();
  undefined initialize(Node root);
};

[Exposed=Window]
partial interface HTMLTemplateElement {
  [CEReactions] attribute DOMString shadowRootCustomElementRegistry;
};

[Exposed=Window]
partial interface Document {
  readonly attribute CustomElementRegistry? customElementRegistry;
};

[Exposed=Window]
partial interface Element {
  readonly attribute CustomElementRegistry? customElementRegistry;
};

[Exposed=Window]
partial interface ShadowRoot {
  readonly attribute CustomElementRegistry? customElementRegistry;
};

dictionary ImportNodeOptions {
  CustomElementRegistry customElementRegistry;
  boolean selfOnly = false;
};

partial dictionary ShadowRootInit {
  CustomElementRegistry customElementRegistry;
};

partial dictionary ElementCreationOptions {
  CustomElementRegistry customElementRegistry;
};
