/* THIS FILE IS AUTOGENERATED BY Codegen.py - DO NOT EDIT */

#ifndef mozilla_dom_PrototypeList_h
#define mozilla_dom_PrototypeList_h

namespace mozilla {
namespace dom {
namespace prototypes {

namespace id {

enum ID : uint16_t
{
  _ID_Start = 0,
  ANGLE_instanced_arrays = _ID_Start,
  AccessibleNode,
  Addon,
  AddonEvent,
  AddonInstall,
  AddonManager,
  AnalyserNode,
  Animation,
  AnimationEffectReadOnly,
  AnimationEffectTiming,
  AnimationEffectTimingReadOnly,
  AnimationEvent,
  AnimationPlaybackEvent,
  AnimationTimeline,
  AnonymousContent,
  ArchiveReader,
  ArchiveRequest,
  Attr,
  AudioBuffer,
  AudioBufferSourceNode,
  AudioContext,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioProcessingEvent,
  AudioStreamTrack,
  AudioTrack,
  AudioTrackList,
  AutocompleteErrorEvent,
  BarProp,
  BatteryManager,
  BeforeAfterKeyboardEvent,
  BeforeUnloadEvent,
  BiquadFilterNode,
  Blob,
  BlobEvent,
  BoxObject,
  BroadcastChannel,
  BrowserElementAudioChannel,
  BrowserElementProxy,
  BrowserFeedWriter,
  CDATASection,
  CSS2Properties,
  CSSAnimation,
  CSSLexer,
  CSSPrimitiveValue,
  CSSPseudoElement,
  CSSRuleList,
  CSSStyleDeclaration,
  CSSStyleSheet,
  CSSTransition,
  CSSValue,
  CSSValueList,
  Cache,
  CacheStorage,
  CanvasCaptureMediaStream,
  CanvasGradient,
  CanvasPattern,
  CanvasRenderingContext2D,
  CaretPosition,
  CaretStateChangedEvent,
  ChannelMergerNode,
  ChannelSplitterNode,
  CharacterData,
  CheckerboardReportService,
  ChromeNodeList,
  ChromeWorker,
  Client,
  Clients,
  ClipboardEvent,
  CloseEvent,
  CommandEvent,
  Comment,
  CompositionEvent,
  ConstantSourceNode,
  ContainerBoxObject,
  ConvolverNode,
  Coordinates,
  CreateOfferRequest,
  Crypto,
  CryptoKey,
  CustomElementRegistry,
  CustomEvent,
  DOMCursor,
  DOMDownload,
  DOMDownloadManager,
  DOMError,
  DOMException,
  DOMImplementation,
  DOMMatrix,
  DOMMatrixReadOnly,
  DOMParser,
  DOMPoint,
  DOMPointReadOnly,
  DOMQuad,
  DOMRect,
  DOMRectList,
  DOMRectReadOnly,
  DOMRequest,
  DOMStringList,
  DOMStringMap,
  DOMTokenList,
  DataChannel,
  DataContainerEvent,
  DataTransfer,
  DataTransferItem,
  DataTransferItemList,
  DedicatedWorkerGlobalScope,
  DelayNode,
  DesktopNotification,
  DesktopNotificationCenter,
  DeviceAcceleration,
  DeviceLightEvent,
  DeviceMotionEvent,
  DeviceOrientationEvent,
  DeviceProximityEvent,
  DeviceRotationRate,
  DeviceStorage,
  DeviceStorageAreaChangedEvent,
  DeviceStorageAreaListener,
  DeviceStorageChangeEvent,
  Directory,
  Document,
  DocumentFragment,
  DocumentTimeline,
  DocumentType,
  DominatorTree,
  DownloadEvent,
  DragEvent,
  DynamicsCompressorNode,
  EXT_blend_minmax,
  EXT_color_buffer_float,
  EXT_color_buffer_half_float,
  EXT_disjoint_timer_query,
  EXT_frag_depth,
  EXT_sRGB,
  EXT_shader_texture_lod,
  EXT_texture_filter_anisotropic,
  Element,
  ErrorEvent,
  Event,
  EventSource,
  EventTarget,
  Exception,
  ExtendableEvent,
  ExtendableMessageEvent,
  External,
  FetchEvent,
  File,
  FileList,
  FileReader,
  FileReaderSync,
  FileSystem,
  FileSystemDirectoryEntry,
  FileSystemDirectoryReader,
  FileSystemEntry,
  FileSystemFileEntry,
  FlyWebDiscoveryManager,
  FlyWebFetchEvent,
  FlyWebPublishedServer,
  FlyWebWebSocketEvent,
  FocusEvent,
  FontFace,
  FontFaceSet,
  FontFaceSetIterator,
  FontFaceSetLoadEvent,
  FormData,
  FormDataIterator,
  GainNode,
  Gamepad,
  GamepadAxisMoveEvent,
  GamepadButton,
  GamepadButtonEvent,
  GamepadEvent,
  GamepadPose,
  GamepadServiceTest,
  Geolocation,
  GetUserMediaRequest,
  Grid,
  GridArea,
  GridDimension,
  GridLine,
  GridLines,
  GridTrack,
  GridTracks,
  HTMLAllCollection,
  HTMLAnchorElement,
  HTMLAppletElement,
  HTMLAreaElement,
  HTMLAudioElement,
  HTMLBRElement,
  HTMLBaseElement,
  HTMLBodyElement,
  HTMLButtonElement,
  HTMLCanvasElement,
  HTMLCollection,
  HTMLContentElement,
  HTMLDListElement,
  HTMLDataElement,
  HTMLDataListElement,
  HTMLDetailsElement,
  HTMLDirectoryElement,
  HTMLDivElement,
  HTMLDocument,
  HTMLElement,
  HTMLEmbedElement,
  HTMLFieldSetElement,
  HTMLFontElement,
  HTMLFormControlsCollection,
  HTMLFormElement,
  HTMLFrameElement,
  HTMLFrameSetElement,
  HTMLHRElement,
  HTMLHeadElement,
  HTMLHeadingElement,
  HTMLHtmlElement,
  HTMLIFrameElement,
  HTMLImageElement,
  HTMLInputElement,
  HTMLLIElement,
  HTMLLabelElement,
  HTMLLegendElement,
  HTMLLinkElement,
  HTMLMapElement,
  HTMLMediaElement,
  HTMLMenuElement,
  HTMLMenuItemElement,
  HTMLMetaElement,
  HTMLMeterElement,
  HTMLModElement,
  HTMLOListElement,
  HTMLObjectElement,
  HTMLOptGroupElement,
  HTMLOptionElement,
  HTMLOptionsCollection,
  HTMLOutputElement,
  HTMLParagraphElement,
  HTMLParamElement,
  HTMLPictureElement,
  HTMLPreElement,
  HTMLProgressElement,
  HTMLQuoteElement,
  HTMLScriptElement,
  HTMLSelectElement,
  HTMLShadowElement,
  HTMLSourceElement,
  HTMLSpanElement,
  HTMLStyleElement,
  HTMLTableCaptionElement,
  HTMLTableCellElement,
  HTMLTableColElement,
  HTMLTableElement,
  HTMLTableRowElement,
  HTMLTableSectionElement,
  HTMLTemplateElement,
  HTMLTextAreaElement,
  HTMLTimeElement,
  HTMLTitleElement,
  HTMLTrackElement,
  HTMLUListElement,
  HTMLUnknownElement,
  HTMLVideoElement,
  HashChangeEvent,
  Headers,
  HeadersIterator,
  HeapSnapshot,
  HiddenPluginEvent,
  History,
  IDBCursor,
  IDBCursorWithValue,
  IDBDatabase,
  IDBFactory,
  IDBFileHandle,
  IDBFileRequest,
  IDBIndex,
  IDBKeyRange,
  IDBLocaleAwareKeyRange,
  IDBMutableFile,
  IDBObjectStore,
  IDBOpenDBRequest,
  IDBRequest,
  IDBTransaction,
  IDBVersionChangeEvent,
  IIRFilterNode,
  IdleDeadline,
  ImageBitmap,
  ImageBitmapRenderingContext,
  ImageCapture,
  ImageCaptureError,
  ImageCaptureErrorEvent,
  ImageData,
  ImageDocument,
  InputEvent,
  InstallTriggerImpl,
  IntersectionObserver,
  IntersectionObserverEntry,
  KeyboardEvent,
  KeyframeEffect,
  KeyframeEffectReadOnly,
  LegacyMozTCPSocket,
  ListBoxObject,
  LocalMediaStream,
  Location,
  MediaDeviceInfo,
  MediaDevices,
  MediaElementAudioSourceNode,
  MediaEncryptedEvent,
  MediaError,
  MediaKeyError,
  MediaKeyMessageEvent,
  MediaKeySession,
  MediaKeyStatusMap,
  MediaKeyStatusMapIterator,
  MediaKeySystemAccess,
  MediaKeys,
  MediaList,
  MediaQueryList,
  MediaRecorder,
  MediaSource,
  MediaStream,
  MediaStreamAudioDestinationNode,
  MediaStreamAudioSourceNode,
  MediaStreamError,
  MediaStreamEvent,
  MediaStreamList,
  MediaStreamTrack,
  MediaStreamTrackEvent,
  MenuBoxObject,
  MessageChannel,
  MessageEvent,
  MessagePort,
  MimeType,
  MimeTypeArray,
  MouseEvent,
  MouseScrollEvent,
  MozCanvasPrintState,
  MozHardwareInput,
  MozInputContext,
  MozInputContextFocusEventDetail,
  MozInputContextSelectionChangeEventDetail,
  MozInputContextSurroundingTextChangeEventDetail,
  MozInputMethod,
  MozInputMethodManager,
  MozInputRegistryEventDetail,
  MozPowerManager,
  MozSelfSupport,
  MozSettingsEvent,
  MozSettingsTransactionEvent,
  MozTetheringManager,
  MozTimeManager,
  MozWakeLock,
  MutationEvent,
  MutationObserver,
  MutationRecord,
  NamedNodeMap,
  Navigator,
  NetworkInformation,
  Node,
  NodeIterator,
  NodeList,
  Notification,
  NotificationEvent,
  NotifyPaintEvent,
  OES_element_index_uint,
  OES_standard_derivatives,
  OES_texture_float,
  OES_texture_float_linear,
  OES_texture_half_float,
  OES_texture_half_float_linear,
  OES_vertex_array_object,
  OfflineAudioCompletionEvent,
  OfflineAudioContext,
  OfflineResourceList,
  OffscreenCanvas,
  OnlyForUseInConstructor,
  OscillatorNode,
  PageTransitionEvent,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  Path2D,
  PeerConnectionImpl,
  PeerConnectionObserver,
  Performance,
  PerformanceEntry,
  PerformanceEntryEvent,
  PerformanceMark,
  PerformanceMeasure,
  PerformanceNavigation,
  PerformanceObserver,
  PerformanceObserverEntryList,
  PerformanceResourceTiming,
  PerformanceTiming,
  PeriodicWave,
  PermissionSettings,
  PermissionStatus,
  Permissions,
  Plugin,
  PluginArray,
  PluginCrashedEvent,
  PointerEvent,
  PopStateEvent,
  PopupBlockedEvent,
  PopupBoxObject,
  Position,
  PositionError,
  Presentation,
  PresentationAvailability,
  PresentationConnection,
  PresentationConnectionAvailableEvent,
  PresentationConnectionCloseEvent,
  PresentationConnectionList,
  PresentationDeviceInfoManager,
  PresentationReceiver,
  PresentationRequest,
  ProcessingInstruction,
  ProgressEvent,
  Promise,
  PromiseNativeHandler,
  PushEvent,
  PushManager,
  PushManagerImpl,
  PushMessageData,
  PushSubscription,
  PushSubscriptionOptions,
  RGBColor,
  RTCCertificate,
  RTCDTMFSender,
  RTCDTMFToneChangeEvent,
  RTCDataChannelEvent,
  RTCIceCandidate,
  RTCIdentityProviderRegistrar,
  RTCPeerConnection,
  RTCPeerConnectionIceEvent,
  RTCPeerConnectionStatic,
  RTCRtpReceiver,
  RTCRtpSender,
  RTCSessionDescription,
  RTCStatsReport,
  RTCTrackEvent,
  RadioNodeList,
  Range,
  RecordErrorEvent,
  Rect,
  Request,
  Response,
  SEChannel,
  SEManager,
  SEReader,
  SEResponse,
  SESession,
  SVGAElement,
  SVGAngle,
  SVGAnimateElement,
  SVGAnimateMotionElement,
  SVGAnimateTransformElement,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedEnumeration,
  SVGAnimatedInteger,
  SVGAnimatedLength,
  SVGAnimatedLengthList,
  SVGAnimatedNumber,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedRect,
  SVGAnimatedString,
  SVGAnimatedTransformList,
  SVGAnimationElement,
  SVGCircleElement,
  SVGClipPathElement,
  SVGComponentTransferFunctionElement,
  SVGDefsElement,
  SVGDescElement,
  SVGElement,
  SVGEllipseElement,
  SVGFEBlendElement,
  SVGFEColorMatrixElement,
  SVGFEComponentTransferElement,
  SVGFECompositeElement,
  SVGFEConvolveMatrixElement,
  SVGFEDiffuseLightingElement,
  SVGFEDisplacementMapElement,
  SVGFEDistantLightElement,
  SVGFEDropShadowElement,
  SVGFEFloodElement,
  SVGFEFuncAElement,
  SVGFEFuncBElement,
  SVGFEFuncGElement,
  SVGFEFuncRElement,
  SVGFEGaussianBlurElement,
  SVGFEImageElement,
  SVGFEMergeElement,
  SVGFEMergeNodeElement,
  SVGFEMorphologyElement,
  SVGFEOffsetElement,
  SVGFEPointLightElement,
  SVGFESpecularLightingElement,
  SVGFESpotLightElement,
  SVGFETileElement,
  SVGFETurbulenceElement,
  SVGFilterElement,
  SVGForeignObjectElement,
  SVGGElement,
  SVGGradientElement,
  SVGGraphicsElement,
  SVGImageElement,
  SVGLength,
  SVGLengthList,
  SVGLineElement,
  SVGLinearGradientElement,
  SVGMPathElement,
  SVGMarkerElement,
  SVGMaskElement,
  SVGMatrix,
  SVGMetadataElement,
  SVGNumber,
  SVGNumberList,
  SVGPathElement,
  SVGPathSeg,
  SVGPathSegArcAbs,
  SVGPathSegArcRel,
  SVGPathSegClosePath,
  SVGPathSegCurvetoCubicAbs,
  SVGPathSegCurvetoCubicRel,
  SVGPathSegCurvetoCubicSmoothAbs,
  SVGPathSegCurvetoCubicSmoothRel,
  SVGPathSegCurvetoQuadraticAbs,
  SVGPathSegCurvetoQuadraticRel,
  SVGPathSegCurvetoQuadraticSmoothAbs,
  SVGPathSegCurvetoQuadraticSmoothRel,
  SVGPathSegLinetoAbs,
  SVGPathSegLinetoHorizontalAbs,
  SVGPathSegLinetoHorizontalRel,
  SVGPathSegLinetoRel,
  SVGPathSegLinetoVerticalAbs,
  SVGPathSegLinetoVerticalRel,
  SVGPathSegList,
  SVGPathSegMovetoAbs,
  SVGPathSegMovetoRel,
  SVGPatternElement,
  SVGPoint,
  SVGPointList,
  SVGPolygonElement,
  SVGPolylineElement,
  SVGPreserveAspectRatio,
  SVGRadialGradientElement,
  SVGRect,
  SVGRectElement,
  SVGSVGElement,
  SVGScriptElement,
  SVGSetElement,
  SVGStopElement,
  SVGStringList,
  SVGStyleElement,
  SVGSwitchElement,
  SVGSymbolElement,
  SVGTSpanElement,
  SVGTextContentElement,
  SVGTextElement,
  SVGTextPathElement,
  SVGTextPositioningElement,
  SVGTitleElement,
  SVGTransform,
  SVGTransformList,
  SVGUseElement,
  SVGViewElement,
  SVGZoomEvent,
  Screen,
  ScreenOrientation,
  ScriptProcessorNode,
  ScrollAreaEvent,
  ScrollBoxObject,
  ScrollViewChangeEvent,
  Selection,
  ServiceWorker,
  ServiceWorkerContainer,
  ServiceWorkerGlobalScope,
  ServiceWorkerMessageEvent,
  ServiceWorkerRegistration,
  SettingsLock,
  SettingsManager,
  ShadowRoot,
  SharedWorker,
  SharedWorkerGlobalScope,
  SimpleGestureEvent,
  SourceBuffer,
  SourceBufferList,
  SpeechGrammar,
  SpeechGrammarList,
  SpeechRecognition,
  SpeechRecognitionAlternative,
  SpeechRecognitionError,
  SpeechRecognitionEvent,
  SpeechRecognitionResult,
  SpeechRecognitionResultList,
  SpeechSynthesis,
  SpeechSynthesisErrorEvent,
  SpeechSynthesisEvent,
  SpeechSynthesisUtterance,
  SpeechSynthesisVoice,
  StereoPannerNode,
  Storage,
  StorageEvent,
  StorageManager,
  StyleRuleChangeEvent,
  StyleSheet,
  StyleSheetApplicableStateChangeEvent,
  StyleSheetChangeEvent,
  StyleSheetList,
  SubtleCrypto,
  SystemUpdateManager,
  SystemUpdateProvider,
  TCPServerSocket,
  TCPServerSocketEvent,
  TCPSocket,
  TCPSocketErrorEvent,
  TCPSocketEvent,
  TestCImplementedInterface,
  TestCImplementedInterface2,
  TestChildInterface,
  TestCppKeywordNamedMethodsInterface,
  TestDeprecatedInterface,
  TestExampleInterface,
  TestExampleProxyInterface,
  TestExampleWorkerInterface,
  TestIndexedAndNamedGetterAndSetterInterface,
  TestIndexedAndNamedGetterInterface,
  TestIndexedAndNamedSetterInterface,
  TestIndexedGetterAndSetterAndNamedGetterInterface,
  TestIndexedGetterInterface,
  TestIndexedSetterInterface,
  TestInterface,
  TestInterfaceWithPromiseConstructorArg,
  TestJSImplInterface,
  TestJSImplInterface2,
  TestJSImplInterface3,
  TestJSImplInterface4,
  TestJSImplInterface5,
  TestJSImplInterface6,
  TestJSImplNoInterfaceObject,
  TestNamedDeleterInterface,
  TestNamedDeleterWithRetvalInterface,
  TestNamedGetterInterface,
  TestNamedSetterInterface,
  TestNavigator,
  TestNavigatorWithConstructor,
  TestNonWrapperCacheInterface,
  TestParentInterface,
  TestRenamedInterface,
  TestSecureContextInterface,
  TestWorkerExposedInterface,
  Text,
  TextClause,
  TextDecoder,
  TextEncoder,
  TextMetrics,
  TextTrack,
  TextTrackCue,
  TextTrackCueList,
  TextTrackList,
  TimeEvent,
  TimeRanges,
  Touch,
  TouchEvent,
  TouchList,
  TrackEvent,
  TransitionEvent,
  TreeBoxObject,
  TreeColumn,
  TreeColumns,
  TreeWalker,
  U2F,
  UDPMessageEvent,
  UDPSocket,
  UIEvent,
  URL,
  URLSearchParams,
  URLSearchParamsIterator,
  UserProximityEvent,
  VRDisplay,
  VRDisplayCapabilities,
  VREyeParameters,
  VRFieldOfView,
  VRFrameData,
  VRPose,
  VRStageParameters,
  VTTCue,
  VTTRegion,
  ValidityState,
  VideoPlaybackQuality,
  VideoStreamTrack,
  VideoTrack,
  VideoTrackList,
  WEBGL_color_buffer_float,
  WEBGL_compressed_texture_atc,
  WEBGL_compressed_texture_etc,
  WEBGL_compressed_texture_etc1,
  WEBGL_compressed_texture_pvrtc,
  WEBGL_compressed_texture_s3tc,
  WEBGL_debug_renderer_info,
  WEBGL_debug_shaders,
  WEBGL_depth_texture,
  WEBGL_draw_buffers,
  WEBGL_lose_context,
  WaveShaperNode,
  WebGL2RenderingContext,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLContextEvent,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLQuery,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLSampler,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLSync,
  WebGLTexture,
  WebGLTransformFeedback,
  WebGLUniformLocation,
  WebGLVertexArrayObject,
  WebKitCSSMatrix,
  WebSocket,
  WheelEvent,
  Window,
  WindowClient,
  WindowRoot,
  Worker,
  WorkerDebuggerGlobalScope,
  WorkerGlobalScope,
  WorkerLocation,
  WorkerNavigator,
  Worklet,
  WorkletGlobalScope,
  XMLDocument,
  XMLHttpRequest,
  XMLHttpRequestEventTarget,
  XMLHttpRequestUpload,
  XMLSerializer,
  XMLStylesheetProcessingInstruction,
  XPathEvaluator,
  XPathExpression,
  XPathResult,
  XSLTProcessor,
  XULCommandEvent,
  XULDocument,
  XULElement,
  mozRTCIceCandidate,
  mozRTCPeerConnection,
  mozRTCSessionDescription,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

static_assert(id::_ID_Count < (uint64_t(1) << (sizeof(((JSJitInfo*)nullptr)->protoID) * 8)), "Too many prototypes!");

} // namespace prototypes
} // namespace dom
} // namespace mozilla

#define MAX_PROTOTYPE_CHAIN_LENGTH 8

static_assert(MAX_PROTOTYPE_CHAIN_LENGTH < (uint64_t(1) << (sizeof(((JSJitInfo*)nullptr)->depth) * 8)), "Some inheritance chain is too long!");

namespace mozilla {
namespace dom {
namespace constructors {

namespace id {

enum ID : uint16_t
{
  _ID_Start = prototypes::id::_ID_Count,
  AccessibleNode = _ID_Start,
  Addon,
  AddonEvent,
  AddonInstall,
  AddonManager,
  AddonManagerPermissions,
  AnalyserNode,
  Animation,
  AnimationEffectReadOnly,
  AnimationEffectTiming,
  AnimationEffectTimingReadOnly,
  AnimationEvent,
  AnimationPlaybackEvent,
  AnimationTimeline,
  AnonymousContent,
  ArchiveReader,
  ArchiveRequest,
  Attr,
  AudioBuffer,
  AudioBufferSourceNode,
  AudioContext,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioProcessingEvent,
  AudioStreamTrack,
  AudioTrack,
  AudioTrackList,
  AutocompleteErrorEvent,
  BarProp,
  BatteryManager,
  BeforeAfterKeyboardEvent,
  BeforeUnloadEvent,
  BiquadFilterNode,
  Blob,
  BlobEvent,
  BoxObject,
  BroadcastChannel,
  BrowserElementAudioChannel,
  BrowserElementProxy,
  BrowserFeedWriter,
  CDATASection,
  CSS,
  CSS2Properties,
  CSSAnimation,
  CSSLexer,
  CSSPrimitiveValue,
  CSSPseudoElement,
  CSSRuleList,
  CSSStyleDeclaration,
  CSSStyleSheet,
  CSSTransition,
  CSSValue,
  CSSValueList,
  Cache,
  CacheStorage,
  CanvasCaptureMediaStream,
  CanvasGradient,
  CanvasPattern,
  CanvasRenderingContext2D,
  CaretPosition,
  CaretStateChangedEvent,
  ChannelMergerNode,
  ChannelSplitterNode,
  CharacterData,
  CheckerboardReportService,
  ChromeNodeList,
  ChromeUtils,
  ChromeWindow,
  ChromeWorker,
  Client,
  Clients,
  ClipboardEvent,
  CloseEvent,
  CommandEvent,
  Comment,
  CompositionEvent,
  ConstantSourceNode,
  ConvolverNode,
  CreateOfferRequest,
  Crypto,
  CryptoKey,
  CustomElementRegistry,
  CustomEvent,
  DOMCursor,
  DOMDownload,
  DOMError,
  DOMException,
  DOMImplementation,
  DOMMatrix,
  DOMMatrixReadOnly,
  DOMParser,
  DOMPoint,
  DOMPointReadOnly,
  DOMQuad,
  DOMRect,
  DOMRectList,
  DOMRectReadOnly,
  DOMRequest,
  DOMStringList,
  DOMStringMap,
  DOMTokenList,
  DataChannel,
  DataContainerEvent,
  DataTransfer,
  DataTransferItem,
  DataTransferItemList,
  DedicatedWorkerGlobalScope,
  DelayNode,
  DesktopNotification,
  DesktopNotificationCenter,
  DeviceLightEvent,
  DeviceMotionEvent,
  DeviceOrientationEvent,
  DeviceProximityEvent,
  DeviceStorage,
  DeviceStorageAreaChangedEvent,
  DeviceStorageAreaListener,
  DeviceStorageChangeEvent,
  Directory,
  Document,
  DocumentFragment,
  DocumentTimeline,
  DocumentType,
  DominatorTree,
  DownloadEvent,
  DragEvent,
  DynamicsCompressorNode,
  Element,
  ErrorEvent,
  Event,
  EventSource,
  EventTarget,
  ExtendableEvent,
  ExtendableMessageEvent,
  External,
  FetchEvent,
  File,
  FileList,
  FileReader,
  FileReaderSync,
  FileSystem,
  FileSystemDirectoryEntry,
  FileSystemDirectoryReader,
  FileSystemEntry,
  FileSystemFileEntry,
  FlyWebDiscoveryManager,
  FlyWebFetchEvent,
  FlyWebPublishedServer,
  FlyWebWebSocketEvent,
  FocusEvent,
  FontFace,
  FontFaceSet,
  FontFaceSetLoadEvent,
  FormData,
  GainNode,
  Gamepad,
  GamepadAxisMoveEvent,
  GamepadButton,
  GamepadButtonEvent,
  GamepadEvent,
  GamepadPose,
  GamepadServiceTest,
  Grid,
  GridArea,
  GridDimension,
  GridLine,
  GridLines,
  GridTrack,
  GridTracks,
  HTMLAllCollection,
  HTMLAnchorElement,
  HTMLAppletElement,
  HTMLAreaElement,
  HTMLAudioElement,
  HTMLBRElement,
  HTMLBaseElement,
  HTMLBodyElement,
  HTMLButtonElement,
  HTMLCanvasElement,
  HTMLCollection,
  HTMLContentElement,
  HTMLDListElement,
  HTMLDataElement,
  HTMLDataListElement,
  HTMLDetailsElement,
  HTMLDirectoryElement,
  HTMLDivElement,
  HTMLDocument,
  HTMLElement,
  HTMLEmbedElement,
  HTMLFieldSetElement,
  HTMLFontElement,
  HTMLFormControlsCollection,
  HTMLFormElement,
  HTMLFrameElement,
  HTMLFrameSetElement,
  HTMLHRElement,
  HTMLHeadElement,
  HTMLHeadingElement,
  HTMLHtmlElement,
  HTMLIFrameElement,
  HTMLImageElement,
  HTMLInputElement,
  HTMLLIElement,
  HTMLLabelElement,
  HTMLLegendElement,
  HTMLLinkElement,
  HTMLMapElement,
  HTMLMediaElement,
  HTMLMenuElement,
  HTMLMenuItemElement,
  HTMLMetaElement,
  HTMLMeterElement,
  HTMLModElement,
  HTMLOListElement,
  HTMLObjectElement,
  HTMLOptGroupElement,
  HTMLOptionElement,
  HTMLOptionsCollection,
  HTMLOutputElement,
  HTMLParagraphElement,
  HTMLParamElement,
  HTMLPictureElement,
  HTMLPreElement,
  HTMLProgressElement,
  HTMLQuoteElement,
  HTMLScriptElement,
  HTMLSelectElement,
  HTMLShadowElement,
  HTMLSourceElement,
  HTMLSpanElement,
  HTMLStyleElement,
  HTMLTableCaptionElement,
  HTMLTableCellElement,
  HTMLTableColElement,
  HTMLTableElement,
  HTMLTableRowElement,
  HTMLTableSectionElement,
  HTMLTemplateElement,
  HTMLTextAreaElement,
  HTMLTimeElement,
  HTMLTitleElement,
  HTMLTrackElement,
  HTMLUListElement,
  HTMLUnknownElement,
  HTMLVideoElement,
  HashChangeEvent,
  Headers,
  HeapSnapshot,
  HiddenPluginEvent,
  History,
  IDBCursor,
  IDBCursorWithValue,
  IDBDatabase,
  IDBFactory,
  IDBFileHandle,
  IDBFileRequest,
  IDBIndex,
  IDBKeyRange,
  IDBLocaleAwareKeyRange,
  IDBMutableFile,
  IDBObjectStore,
  IDBOpenDBRequest,
  IDBRequest,
  IDBTransaction,
  IDBVersionChangeEvent,
  IIRFilterNode,
  IdleDeadline,
  ImageBitmap,
  ImageBitmapRenderingContext,
  ImageCapture,
  ImageCaptureErrorEvent,
  ImageData,
  ImageDocument,
  InputEvent,
  InstallTriggerImpl,
  IntersectionObserver,
  IntersectionObserverEntry,
  KeyEvent,
  KeyboardEvent,
  KeyframeEffect,
  KeyframeEffectReadOnly,
  LocalMediaStream,
  Location,
  MediaDeviceInfo,
  MediaDevices,
  MediaElementAudioSourceNode,
  MediaEncryptedEvent,
  MediaError,
  MediaKeyError,
  MediaKeyMessageEvent,
  MediaKeySession,
  MediaKeyStatusMap,
  MediaKeySystemAccess,
  MediaKeys,
  MediaList,
  MediaQueryList,
  MediaRecorder,
  MediaSource,
  MediaStream,
  MediaStreamAudioDestinationNode,
  MediaStreamAudioSourceNode,
  MediaStreamEvent,
  MediaStreamList,
  MediaStreamTrack,
  MediaStreamTrackEvent,
  MenuBoxObject,
  MessageChannel,
  MessageEvent,
  MessagePort,
  MimeType,
  MimeTypeArray,
  MouseEvent,
  MouseScrollEvent,
  MozCanvasPrintState,
  MozHardwareInput,
  MozInputContext,
  MozInputContextFocusEventDetail,
  MozInputContextSelectionChangeEventDetail,
  MozInputContextSurroundingTextChangeEventDetail,
  MozInputMethod,
  MozInputMethodManager,
  MozInputRegistryEventDetail,
  MozPowerManager,
  MozSelfSupport,
  MozSettingsEvent,
  MozSettingsTransactionEvent,
  MozTetheringManager,
  MozTimeManager,
  MozWakeLock,
  MutationEvent,
  MutationObserver,
  MutationRecord,
  NamedNodeMap,
  Navigator,
  NetworkInformation,
  Node,
  NodeFilter,
  NodeIterator,
  NodeList,
  Notification,
  NotificationEvent,
  NotifyPaintEvent,
  OfflineAudioCompletionEvent,
  OfflineAudioContext,
  OfflineResourceList,
  OffscreenCanvas,
  OnlyForUseInConstructor,
  OscillatorNode,
  PageTransitionEvent,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  Path2D,
  PeerConnectionImpl,
  PeerConnectionObserver,
  Performance,
  PerformanceEntry,
  PerformanceEntryEvent,
  PerformanceMark,
  PerformanceMeasure,
  PerformanceNavigation,
  PerformanceObserver,
  PerformanceObserverEntryList,
  PerformanceResourceTiming,
  PerformanceTiming,
  PeriodicWave,
  PermissionSettings,
  PermissionStatus,
  Permissions,
  Plugin,
  PluginArray,
  PluginCrashedEvent,
  PointerEvent,
  PopStateEvent,
  PopupBlockedEvent,
  PopupBoxObject,
  Presentation,
  PresentationAvailability,
  PresentationConnection,
  PresentationConnectionAvailableEvent,
  PresentationConnectionCloseEvent,
  PresentationConnectionList,
  PresentationDeviceInfoManager,
  PresentationReceiver,
  PresentationRequest,
  ProcessingInstruction,
  ProgressEvent,
  PromiseDebugging,
  PushEvent,
  PushManager,
  PushManagerImpl,
  PushMessageData,
  PushSubscription,
  PushSubscriptionOptions,
  RGBColor,
  RTCCertificate,
  RTCDTMFSender,
  RTCDTMFToneChangeEvent,
  RTCDataChannelEvent,
  RTCIceCandidate,
  RTCPeerConnection,
  RTCPeerConnectionIceEvent,
  RTCPeerConnectionStatic,
  RTCRtpReceiver,
  RTCRtpSender,
  RTCSessionDescription,
  RTCStatsReport,
  RTCTrackEvent,
  RadioNodeList,
  Range,
  RecordErrorEvent,
  Rect,
  Request,
  Response,
  SEChannel,
  SEReader,
  SEResponse,
  SESession,
  SVGAElement,
  SVGAngle,
  SVGAnimateElement,
  SVGAnimateMotionElement,
  SVGAnimateTransformElement,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedEnumeration,
  SVGAnimatedInteger,
  SVGAnimatedLength,
  SVGAnimatedLengthList,
  SVGAnimatedNumber,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedRect,
  SVGAnimatedString,
  SVGAnimatedTransformList,
  SVGAnimationElement,
  SVGCircleElement,
  SVGClipPathElement,
  SVGComponentTransferFunctionElement,
  SVGDefsElement,
  SVGDescElement,
  SVGElement,
  SVGEllipseElement,
  SVGFEBlendElement,
  SVGFEColorMatrixElement,
  SVGFEComponentTransferElement,
  SVGFECompositeElement,
  SVGFEConvolveMatrixElement,
  SVGFEDiffuseLightingElement,
  SVGFEDisplacementMapElement,
  SVGFEDistantLightElement,
  SVGFEDropShadowElement,
  SVGFEFloodElement,
  SVGFEFuncAElement,
  SVGFEFuncBElement,
  SVGFEFuncGElement,
  SVGFEFuncRElement,
  SVGFEGaussianBlurElement,
  SVGFEImageElement,
  SVGFEMergeElement,
  SVGFEMergeNodeElement,
  SVGFEMorphologyElement,
  SVGFEOffsetElement,
  SVGFEPointLightElement,
  SVGFESpecularLightingElement,
  SVGFESpotLightElement,
  SVGFETileElement,
  SVGFETurbulenceElement,
  SVGFilterElement,
  SVGForeignObjectElement,
  SVGGElement,
  SVGGradientElement,
  SVGGraphicsElement,
  SVGImageElement,
  SVGLength,
  SVGLengthList,
  SVGLineElement,
  SVGLinearGradientElement,
  SVGMPathElement,
  SVGMarkerElement,
  SVGMaskElement,
  SVGMatrix,
  SVGMetadataElement,
  SVGNumber,
  SVGNumberList,
  SVGPathElement,
  SVGPathSeg,
  SVGPathSegArcAbs,
  SVGPathSegArcRel,
  SVGPathSegClosePath,
  SVGPathSegCurvetoCubicAbs,
  SVGPathSegCurvetoCubicRel,
  SVGPathSegCurvetoCubicSmoothAbs,
  SVGPathSegCurvetoCubicSmoothRel,
  SVGPathSegCurvetoQuadraticAbs,
  SVGPathSegCurvetoQuadraticRel,
  SVGPathSegCurvetoQuadraticSmoothAbs,
  SVGPathSegCurvetoQuadraticSmoothRel,
  SVGPathSegLinetoAbs,
  SVGPathSegLinetoHorizontalAbs,
  SVGPathSegLinetoHorizontalRel,
  SVGPathSegLinetoRel,
  SVGPathSegLinetoVerticalAbs,
  SVGPathSegLinetoVerticalRel,
  SVGPathSegList,
  SVGPathSegMovetoAbs,
  SVGPathSegMovetoRel,
  SVGPatternElement,
  SVGPoint,
  SVGPointList,
  SVGPolygonElement,
  SVGPolylineElement,
  SVGPreserveAspectRatio,
  SVGRadialGradientElement,
  SVGRect,
  SVGRectElement,
  SVGSVGElement,
  SVGScriptElement,
  SVGSetElement,
  SVGStopElement,
  SVGStringList,
  SVGStyleElement,
  SVGSwitchElement,
  SVGSymbolElement,
  SVGTSpanElement,
  SVGTextContentElement,
  SVGTextElement,
  SVGTextPathElement,
  SVGTextPositioningElement,
  SVGTitleElement,
  SVGTransform,
  SVGTransformList,
  SVGUnitTypes,
  SVGUseElement,
  SVGViewElement,
  SVGZoomAndPan,
  SVGZoomEvent,
  Screen,
  ScreenOrientation,
  ScriptProcessorNode,
  ScrollAreaEvent,
  ScrollViewChangeEvent,
  Selection,
  ServiceWorker,
  ServiceWorkerContainer,
  ServiceWorkerGlobalScope,
  ServiceWorkerMessageEvent,
  ServiceWorkerRegistration,
  SettingsLock,
  SettingsManager,
  ShadowRoot,
  SharedWorker,
  SharedWorkerGlobalScope,
  SimpleGestureEvent,
  SourceBuffer,
  SourceBufferList,
  SpeechGrammar,
  SpeechGrammarList,
  SpeechRecognition,
  SpeechRecognitionAlternative,
  SpeechRecognitionError,
  SpeechRecognitionEvent,
  SpeechRecognitionResult,
  SpeechRecognitionResultList,
  SpeechSynthesis,
  SpeechSynthesisErrorEvent,
  SpeechSynthesisEvent,
  SpeechSynthesisUtterance,
  SpeechSynthesisVoice,
  StereoPannerNode,
  Storage,
  StorageEvent,
  StorageManager,
  StyleRuleChangeEvent,
  StyleSheet,
  StyleSheetApplicableStateChangeEvent,
  StyleSheetChangeEvent,
  StyleSheetList,
  SubtleCrypto,
  SystemUpdateManager,
  SystemUpdateProvider,
  TCPServerSocket,
  TCPServerSocketEvent,
  TCPSocket,
  TCPSocketErrorEvent,
  TCPSocketEvent,
  TestCImplementedInterface,
  TestCImplementedInterface2,
  TestChildInterface,
  TestCppKeywordNamedMethodsInterface,
  TestDeprecatedInterface,
  TestExampleInterface,
  TestExampleProxyInterface,
  TestExampleWorkerInterface,
  TestIndexedAndNamedGetterAndSetterInterface,
  TestIndexedAndNamedGetterInterface,
  TestIndexedAndNamedSetterInterface,
  TestIndexedGetterAndSetterAndNamedGetterInterface,
  TestIndexedGetterInterface,
  TestIndexedSetterInterface,
  TestInterface,
  TestInterfaceWithPromiseConstructorArg,
  TestJSImplInterface,
  TestJSImplInterface2,
  TestJSImplInterface3,
  TestJSImplInterface4,
  TestJSImplInterface5,
  TestJSImplInterface6,
  TestNamedDeleterInterface,
  TestNamedDeleterWithRetvalInterface,
  TestNamedGetterInterface,
  TestNamedSetterInterface,
  TestNamespace,
  TestNavigator,
  TestNavigatorWithConstructor,
  TestNonWrapperCacheInterface,
  TestParentInterface,
  TestProtoObjectHackedNamespace,
  TestRenamedInterface,
  TestRenamedNamespace,
  TestSecureContextInterface,
  TestWorkerExposedInterface,
  Text,
  TextClause,
  TextDecoder,
  TextEncoder,
  TextMetrics,
  TextTrack,
  TextTrackCue,
  TextTrackCueList,
  TextTrackList,
  ThreadSafeChromeUtils,
  TimeEvent,
  TimeRanges,
  Touch,
  TouchEvent,
  TouchList,
  TrackEvent,
  TransitionEvent,
  TreeColumn,
  TreeColumns,
  TreeWalker,
  U2F,
  UDPMessageEvent,
  UDPSocket,
  UIEvent,
  URL,
  URLSearchParams,
  UserProximityEvent,
  VRDisplay,
  VRDisplayCapabilities,
  VREyeParameters,
  VRFieldOfView,
  VRFrameData,
  VRPose,
  VRStageParameters,
  VTTCue,
  VTTRegion,
  ValidityState,
  VideoPlaybackQuality,
  VideoStreamTrack,
  VideoTrack,
  VideoTrackList,
  WaveShaperNode,
  WebGL2RenderingContext,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLContextEvent,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLQuery,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLSampler,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLSync,
  WebGLTexture,
  WebGLTransformFeedback,
  WebGLUniformLocation,
  WebGLVertexArrayObject,
  WebKitCSSMatrix,
  WebSocket,
  WebrtcGlobalInformation,
  WheelEvent,
  Window,
  WindowClient,
  WindowRoot,
  Worker,
  WorkerDebuggerGlobalScope,
  WorkerGlobalScope,
  WorkerLocation,
  WorkerNavigator,
  Worklet,
  WorkletGlobalScope,
  XMLDocument,
  XMLHttpRequest,
  XMLHttpRequestEventTarget,
  XMLHttpRequestUpload,
  XMLSerializer,
  XMLStylesheetProcessingInstruction,
  XPathEvaluator,
  XPathExpression,
  XPathResult,
  XSLTProcessor,
  XULCommandEvent,
  XULDocument,
  XULElement,
  console,
  mozRTCIceCandidate,
  mozRTCPeerConnection,
  mozRTCSessionDescription,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

} // namespace constructors
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
namespace namedpropertiesobjects {

namespace id {

enum ID : uint16_t
{
  _ID_Start = constructors::id::_ID_Count,
  Window = _ID_Start,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

} // namespace namedpropertiesobjects
} // namespace dom
} // namespace mozilla

namespace mozilla {
namespace dom {
template <prototypes::ID PrototypeID>
struct PrototypeTraits;
template <>
struct PrototypeTraits<prototypes::id::ANGLE_instanced_arrays>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AccessibleNode>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Addon>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AddonEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AddonInstall>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AddonManager>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnalyserNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Animation>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnimationEffectReadOnly>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnimationEffectTiming>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnimationEffectTimingReadOnly>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnimationEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnimationPlaybackEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnimationTimeline>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AnonymousContent>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ArchiveReader>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ArchiveRequest>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Attr>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioBuffer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioBufferSourceNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioContext>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioDestinationNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioListener>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioNode>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioParam>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioProcessingEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioStreamTrack>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioTrack>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::AudioTrackList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::AutocompleteErrorEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BarProp>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::BatteryManager>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BeforeAfterKeyboardEvent>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::BeforeUnloadEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BiquadFilterNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Blob>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::BlobEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BoxObject>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::BroadcastChannel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BrowserElementAudioChannel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BrowserElementProxy>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::BrowserFeedWriter>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CDATASection>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSS2Properties>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSAnimation>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSLexer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSPrimitiveValue>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSPseudoElement>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSRuleList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSStyleDeclaration>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSStyleSheet>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSTransition>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSValue>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CSSValueList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Cache>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CacheStorage>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CanvasCaptureMediaStream>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::CanvasGradient>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CanvasPattern>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CanvasRenderingContext2D>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CaretPosition>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CaretStateChangedEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ChannelMergerNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ChannelSplitterNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::CharacterData>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::CheckerboardReportService>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ChromeNodeList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ChromeWorker>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Client>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Clients>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ClipboardEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::CloseEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::CommandEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Comment>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::CompositionEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ConstantSourceNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ContainerBoxObject>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ConvolverNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Coordinates>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CreateOfferRequest>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Crypto>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CryptoKey>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CustomElementRegistry>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::CustomEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMCursor>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMDownload>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMDownloadManager>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMError>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMException>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMImplementation>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMMatrix>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMMatrixReadOnly>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMParser>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMPoint>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMPointReadOnly>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMQuad>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMRect>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMRectList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMRectReadOnly>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMRequest>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMStringList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMStringMap>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DOMTokenList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DataChannel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DataContainerEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DataTransfer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DataTransferItem>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DataTransferItemList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DedicatedWorkerGlobalScope>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::DelayNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::DesktopNotification>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DesktopNotificationCenter>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceAcceleration>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceLightEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceMotionEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceOrientationEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceProximityEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceRotationRate>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceStorage>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceStorageAreaChangedEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceStorageAreaListener>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DeviceStorageChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Directory>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Document>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::DocumentFragment>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::DocumentTimeline>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DocumentType>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::DominatorTree>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::DownloadEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::DragEvent>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::DynamicsCompressorNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_blend_minmax>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_color_buffer_float>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_color_buffer_half_float>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_disjoint_timer_query>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_frag_depth>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_sRGB>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_shader_texture_lod>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EXT_texture_filter_anisotropic>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Element>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ErrorEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Event>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::EventSource>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::EventTarget>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Exception>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ExtendableEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ExtendableMessageEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::External>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FetchEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::File>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileReader>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileReaderSync>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileSystem>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileSystemDirectoryEntry>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileSystemDirectoryReader>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileSystemEntry>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FileSystemFileEntry>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FlyWebDiscoveryManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FlyWebFetchEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FlyWebPublishedServer>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FlyWebWebSocketEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FocusEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::FontFace>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FontFaceSet>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FontFaceSetIterator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FontFaceSetLoadEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::FormData>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::FormDataIterator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GainNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Gamepad>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GamepadAxisMoveEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::GamepadButton>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GamepadButtonEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::GamepadEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::GamepadPose>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GamepadServiceTest>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Geolocation>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GetUserMediaRequest>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Grid>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GridArea>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GridDimension>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GridLine>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GridLines>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GridTrack>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::GridTracks>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLAllCollection>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLAnchorElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLAppletElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLAreaElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLAudioElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLBRElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLBaseElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLBodyElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLButtonElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLCanvasElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLCollection>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLContentElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDListElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDataElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDataListElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDetailsElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDirectoryElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDivElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLDocument>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLElement>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLEmbedElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLFieldSetElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLFontElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLFormControlsCollection>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLFormElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLFrameElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLFrameSetElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLHRElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLHeadElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLHeadingElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLHtmlElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLIFrameElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLImageElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLInputElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLLIElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLLabelElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLLegendElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLLinkElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLMapElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLMediaElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLMenuElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLMenuItemElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLMetaElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLMeterElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLModElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLOListElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLObjectElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLOptGroupElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLOptionElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLOptionsCollection>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLOutputElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLParagraphElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLParamElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLPictureElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLPreElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLProgressElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLQuoteElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLScriptElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLSelectElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLShadowElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLSourceElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLSpanElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLStyleElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTableCaptionElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTableCellElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTableColElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTableElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTableRowElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTableSectionElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTemplateElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTextAreaElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTimeElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTitleElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLTrackElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLUListElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLUnknownElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::HTMLVideoElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::HashChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Headers>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::HeadersIterator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::HeapSnapshot>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::HiddenPluginEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::History>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBCursor>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBCursorWithValue>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBDatabase>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBFactory>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBFileHandle>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBFileRequest>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBIndex>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBKeyRange>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBLocaleAwareKeyRange>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBMutableFile>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBObjectStore>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBOpenDBRequest>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBRequest>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBTransaction>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IDBVersionChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::IIRFilterNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::IdleDeadline>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageBitmap>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageBitmapRenderingContext>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageCapture>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageCaptureError>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageCaptureErrorEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageData>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ImageDocument>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::InputEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::InstallTriggerImpl>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IntersectionObserver>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::IntersectionObserverEntry>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::KeyboardEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::KeyframeEffect>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::KeyframeEffectReadOnly>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::LegacyMozTCPSocket>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ListBoxObject>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::LocalMediaStream>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Location>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaDeviceInfo>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaDevices>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaElementAudioSourceNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaEncryptedEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaError>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeyError>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeyMessageEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeySession>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeyStatusMap>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeyStatusMapIterator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeySystemAccess>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaKeys>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaQueryList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaRecorder>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaSource>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStream>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamAudioDestinationNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamAudioSourceNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamError>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamTrack>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MediaStreamTrackEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MenuBoxObject>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MessageChannel>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MessageEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MessagePort>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MimeType>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MimeTypeArray>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MouseEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::MouseScrollEvent>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozCanvasPrintState>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozHardwareInput>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputContext>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputContextFocusEventDetail>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputContextSelectionChangeEventDetail>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputContextSurroundingTextChangeEventDetail>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputMethod>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputMethodManager>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozInputRegistryEventDetail>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozPowerManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozSelfSupport>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozSettingsEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozSettingsTransactionEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozTetheringManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozTimeManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MozWakeLock>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MutationEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::MutationObserver>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::MutationRecord>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::NamedNodeMap>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Navigator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::NetworkInformation>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Node>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::NodeIterator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::NodeList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Notification>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::NotificationEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::NotifyPaintEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_element_index_uint>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_standard_derivatives>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_texture_float>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_texture_float_linear>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_texture_half_float>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_texture_half_float_linear>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OES_vertex_array_object>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OfflineAudioCompletionEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::OfflineAudioContext>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::OfflineResourceList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::OffscreenCanvas>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::OnlyForUseInConstructor>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::OscillatorNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::PageTransitionEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PaintRequest>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PaintRequestList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PannerNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Path2D>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PeerConnectionImpl>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PeerConnectionObserver>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Performance>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceEntry>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceEntryEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceMark>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceMeasure>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceNavigation>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceObserver>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceObserverEntryList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceResourceTiming>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PerformanceTiming>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PeriodicWave>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PermissionSettings>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PermissionStatus>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Permissions>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Plugin>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PluginArray>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PluginCrashedEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PointerEvent>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::PopStateEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PopupBlockedEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PopupBoxObject>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Position>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PositionError>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Presentation>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationAvailability>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationConnection>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationConnectionAvailableEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationConnectionCloseEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationConnectionList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationDeviceInfoManager>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationReceiver>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PresentationRequest>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ProcessingInstruction>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::ProgressEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Promise>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PromiseNativeHandler>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PushEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::PushManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PushManagerImpl>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PushMessageData>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PushSubscription>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::PushSubscriptionOptions>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RGBColor>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCCertificate>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCDTMFSender>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCDTMFToneChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCDataChannelEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCIceCandidate>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCIdentityProviderRegistrar>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCPeerConnection>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCPeerConnectionIceEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCPeerConnectionStatic>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCRtpReceiver>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCRtpSender>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCSessionDescription>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCStatsReport>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RTCTrackEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::RadioNodeList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Range>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::RecordErrorEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Rect>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Request>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Response>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SEChannel>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SEManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SEReader>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SEResponse>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SESession>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAngle>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimateElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimateMotionElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimateTransformElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedAngle>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedBoolean>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedEnumeration>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedInteger>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedLength>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedLengthList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedNumber>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedNumberList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedPreserveAspectRatio>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedRect>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedString>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimatedTransformList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGAnimationElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGCircleElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGClipPathElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGComponentTransferFunctionElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGDefsElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGDescElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGElement>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGEllipseElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEBlendElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEColorMatrixElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEComponentTransferElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFECompositeElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEConvolveMatrixElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEDiffuseLightingElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEDisplacementMapElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEDistantLightElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEDropShadowElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEFloodElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEFuncAElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEFuncBElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEFuncGElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEFuncRElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEGaussianBlurElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEImageElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEMergeElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEMergeNodeElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEMorphologyElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEOffsetElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFEPointLightElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFESpecularLightingElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFESpotLightElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFETileElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFETurbulenceElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGFilterElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGForeignObjectElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGGElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGGradientElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGGraphicsElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGImageElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGLength>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGLengthList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGLineElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGLinearGradientElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGMPathElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGMarkerElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGMaskElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGMatrix>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGMetadataElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGNumber>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGNumberList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSeg>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegArcAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegArcRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegClosePath>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoCubicAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoCubicRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoCubicSmoothAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoCubicSmoothRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoQuadraticAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoQuadraticRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoQuadraticSmoothAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegCurvetoQuadraticSmoothRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegLinetoAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegLinetoHorizontalAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegLinetoHorizontalRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegLinetoRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegLinetoVerticalAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegLinetoVerticalRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegMovetoAbs>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPathSegMovetoRel>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPatternElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPoint>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPointList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPolygonElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPolylineElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGPreserveAspectRatio>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGRadialGradientElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGRect>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGRectElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGSVGElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGScriptElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGSetElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGStopElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGStringList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGStyleElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGSwitchElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGSymbolElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTSpanElement>
{
  enum
  {
    Depth = 7
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTextContentElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTextElement>
{
  enum
  {
    Depth = 7
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTextPathElement>
{
  enum
  {
    Depth = 6
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTextPositioningElement>
{
  enum
  {
    Depth = 6
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTitleElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTransform>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGTransformList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGUseElement>
{
  enum
  {
    Depth = 5
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGViewElement>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::SVGZoomEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Screen>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ScreenOrientation>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ScriptProcessorNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ScrollAreaEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ScrollBoxObject>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ScrollViewChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Selection>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ServiceWorker>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ServiceWorkerContainer>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ServiceWorkerGlobalScope>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::ServiceWorkerMessageEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ServiceWorkerRegistration>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SettingsLock>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SettingsManager>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::ShadowRoot>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::SharedWorker>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SharedWorkerGlobalScope>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::SimpleGestureEvent>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::SourceBuffer>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SourceBufferList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechGrammar>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechGrammarList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechRecognition>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechRecognitionAlternative>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechRecognitionError>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechRecognitionEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechRecognitionResult>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechRecognitionResultList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechSynthesis>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechSynthesisErrorEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechSynthesisEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechSynthesisUtterance>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::SpeechSynthesisVoice>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::StereoPannerNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::Storage>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::StorageEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::StorageManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::StyleRuleChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::StyleSheet>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::StyleSheetApplicableStateChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::StyleSheetChangeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::StyleSheetList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SubtleCrypto>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SystemUpdateManager>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::SystemUpdateProvider>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TCPServerSocket>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TCPServerSocketEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TCPSocket>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TCPSocketErrorEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TCPSocketEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestCImplementedInterface>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestCImplementedInterface2>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestChildInterface>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestCppKeywordNamedMethodsInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestDeprecatedInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestExampleInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestExampleProxyInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestExampleWorkerInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestIndexedAndNamedGetterAndSetterInterface>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestIndexedAndNamedGetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestIndexedAndNamedSetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestIndexedGetterAndSetterAndNamedGetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestIndexedGetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestIndexedSetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestInterfaceWithPromiseConstructorArg>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplInterface2>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplInterface3>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplInterface4>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplInterface5>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplInterface6>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestJSImplNoInterfaceObject>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNamedDeleterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNamedDeleterWithRetvalInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNamedGetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNamedSetterInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNavigator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNavigatorWithConstructor>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestNonWrapperCacheInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestParentInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestRenamedInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestSecureContextInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TestWorkerExposedInterface>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Text>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextClause>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextDecoder>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextEncoder>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextMetrics>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextTrack>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextTrackCue>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextTrackCueList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TextTrackList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TimeEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TimeRanges>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Touch>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TouchEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::TouchList>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TrackEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TransitionEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TreeBoxObject>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::TreeColumn>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TreeColumns>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::TreeWalker>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::U2F>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::UDPMessageEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::UDPSocket>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::UIEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::URL>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::URLSearchParams>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::URLSearchParamsIterator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::UserProximityEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::VRDisplay>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::VRDisplayCapabilities>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VREyeParameters>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VRFieldOfView>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VRFrameData>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VRPose>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VRStageParameters>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VTTCue>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::VTTRegion>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::ValidityState>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VideoPlaybackQuality>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VideoStreamTrack>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::VideoTrack>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::VideoTrackList>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_color_buffer_float>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_compressed_texture_atc>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_compressed_texture_etc>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_compressed_texture_etc1>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_compressed_texture_pvrtc>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_compressed_texture_s3tc>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_debug_renderer_info>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_debug_shaders>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_depth_texture>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_draw_buffers>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WEBGL_lose_context>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WaveShaperNode>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGL2RenderingContext>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLActiveInfo>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLBuffer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLContextEvent>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLFramebuffer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLProgram>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLQuery>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLRenderbuffer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLRenderingContext>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLSampler>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLShader>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLShaderPrecisionFormat>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLSync>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLTexture>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLTransformFeedback>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLUniformLocation>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebGLVertexArrayObject>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebKitCSSMatrix>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::WebSocket>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WheelEvent>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::Window>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WindowClient>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WindowRoot>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::Worker>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WorkerDebuggerGlobalScope>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WorkerGlobalScope>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::WorkerLocation>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WorkerNavigator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::Worklet>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::WorkletGlobalScope>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::XMLDocument>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::XMLHttpRequest>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::XMLHttpRequestEventTarget>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::XMLHttpRequestUpload>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::XMLSerializer>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::XMLStylesheetProcessingInstruction>
{
  enum
  {
    Depth = 4
  };
};
template <>
struct PrototypeTraits<prototypes::id::XPathEvaluator>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::XPathExpression>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::XPathResult>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::XSLTProcessor>
{
  enum
  {
    Depth = 0
  };
};
template <>
struct PrototypeTraits<prototypes::id::XULCommandEvent>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::XULDocument>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::XULElement>
{
  enum
  {
    Depth = 3
  };
};
template <>
struct PrototypeTraits<prototypes::id::mozRTCIceCandidate>
{
  enum
  {
    Depth = 1
  };
};
template <>
struct PrototypeTraits<prototypes::id::mozRTCPeerConnection>
{
  enum
  {
    Depth = 2
  };
};
template <>
struct PrototypeTraits<prototypes::id::mozRTCSessionDescription>
{
  enum
  {
    Depth = 1
  };
};
extern const char *NamesOfInterfacesWithProtos(unsigned int aIndex);
} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_PrototypeList_h
