/* THIS FILE IS AUTOGENERATED - DO NOT EDIT */

#ifndef mozilla_dom_PrototypeList_h__
#define mozilla_dom_PrototypeList_h__

namespace mozilla {
namespace dom {
namespace prototypes {

namespace id {

enum ID
{
  _ID_Start = 0,
  AnalyserNode = _ID_Start,
  AnimationEvent,
  ArchiveReader,
  ArchiveRequest,
  Attr,
  AudioBuffer,
  AudioBufferSourceNode,
  AudioContext,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioProcessingEvent,
  AudioStreamTrack,
  BarProp,
  BatteryManager,
  BeforeUnloadEvent,
  BiquadFilterNode,
  BlobEvent,
  CDATASection,
  CSS2Properties,
  CSSPrimitiveValue,
  CSSStyleDeclaration,
  CSSStyleSheet,
  CSSValue,
  CSSValueList,
  CallEvent,
  CallsList,
  CameraControl,
  CameraManager,
  CanvasGradient,
  CanvasPattern,
  CanvasRenderingContext2D,
  CaretPosition,
  ChannelMergerNode,
  ChannelSplitterNode,
  CharacterData,
  ClipboardEvent,
  CloseEvent,
  CommandEvent,
  Comment,
  CompositionEvent,
  ContactAddress,
  ContactField,
  ContactManager,
  ContactTelField,
  ConvolverNode,
  Coordinates,
  Crypto,
  CustomEvent,
  DOMCursor,
  DOMError,
  DOMException,
  DOMImplementation,
  DOMMMIError,
  DOMParser,
  DOMRect,
  DOMRectList,
  DOMRequest,
  DOMSettableTokenList,
  DOMStringMap,
  DOMTokenList,
  DOMTransactionEvent,
  DataChannel,
  DataContainerEvent,
  DataStore,
  DataStoreChangeEvent,
  DataStoreCursor,
  DelayNode,
  DesktopNotification,
  DesktopNotificationCenter,
  DeviceLightEvent,
  DeviceMotionEvent,
  DeviceOrientationEvent,
  DeviceProximityEvent,
  DeviceStorage,
  DeviceStorageChangeEvent,
  Document,
  DocumentFragment,
  DocumentType,
  Document_workers,
  DragEvent,
  DummyInterface,
  DummyInterfaceWorkers_workers,
  DynamicsCompressorNode,
  Element,
  ElementReplaceEvent,
  ErrorEvent,
  Event,
  EventSource,
  EventTarget,
  EventTarget_workers,
  Event_workers,
  Exception,
  FileHandle,
  FileList,
  FileReader,
  FileReaderSync_workers,
  FileRequest,
  FocusEvent,
  FormData,
  FormData_workers,
  GainNode,
  Gamepad,
  GamepadAxisMoveEvent,
  GamepadButton,
  GamepadButtonEvent,
  GamepadEvent,
  Geolocation,
  GetUserMediaRequest,
  HTMLAnchorElement,
  HTMLAppletElement,
  HTMLAreaElement,
  HTMLAudioElement,
  HTMLBRElement,
  HTMLBaseElement,
  HTMLBodyElement,
  HTMLButtonElement,
  HTMLCanvasElement,
  HTMLCollection,
  HTMLDListElement,
  HTMLDataElement,
  HTMLDataListElement,
  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,
  HTMLPreElement,
  HTMLProgressElement,
  HTMLPropertiesCollection,
  HTMLQuoteElement,
  HTMLScriptElement,
  HTMLSelectElement,
  HTMLSourceElement,
  HTMLSpanElement,
  HTMLStyleElement,
  HTMLTableCaptionElement,
  HTMLTableCellElement,
  HTMLTableColElement,
  HTMLTableElement,
  HTMLTableRowElement,
  HTMLTableSectionElement,
  HTMLTemplateElement,
  HTMLTextAreaElement,
  HTMLTimeElement,
  HTMLTitleElement,
  HTMLTrackElement,
  HTMLUListElement,
  HTMLUnknownElement,
  HTMLVideoElement,
  HashChangeEvent,
  History,
  IDBCursor,
  IDBCursorWithValue,
  IDBDatabase,
  IDBFactory,
  IDBFileHandle,
  IDBIndex,
  IDBKeyRange,
  IDBObjectStore,
  IDBOpenDBRequest,
  IDBRequest,
  IDBTransaction,
  IDBVersionChangeEvent,
  ImageData,
  ImageDocument,
  KeyboardEvent,
  LocalMediaStream,
  Location,
  MediaElementAudioSourceNode,
  MediaError,
  MediaRecorder,
  MediaSource,
  MediaSource_workers,
  MediaStream,
  MediaStreamAudioDestinationNode,
  MediaStreamAudioSourceNode,
  MediaStreamEvent,
  MediaStreamList,
  MediaStreamTrack,
  MediaStream_workers,
  MessageChannel,
  MessageEvent,
  MessagePort,
  MessagePortList,
  MimeType,
  MimeTypeArray,
  MouseEvent,
  MouseScrollEvent,
  MozActivity,
  MozApplicationEvent,
  MozCanvasPrintState,
  MozContactChangeEvent,
  MozInputContext,
  MozInputMethod,
  MozInputMethodManager,
  MozInterAppConnection,
  MozInterAppConnectionRequest,
  MozInterAppMessageEvent,
  MozInterAppMessagePort,
  MozMmsEvent,
  MozNamedAttrMap,
  MozPowerManager,
  MozSettingsEvent,
  MozSmsEvent,
  MozTimeManager,
  MutationEvent,
  MutationObserver,
  MutationRecord,
  Navigator,
  Node,
  NodeIterator,
  NodeList,
  Notification,
  NotifyAudioAvailableEvent,
  NotifyPaintEvent,
  OfflineAudioCompletionEvent,
  OfflineAudioContext,
  OfflineResourceList,
  OscillatorNode,
  PageTransitionEvent,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  PeerConnectionImpl,
  PeerConnectionObserver,
  Performance,
  PerformanceNavigation,
  PerformanceTiming,
  PeriodicWave,
  PhoneNumberService,
  Plugin,
  PluginArray,
  PopStateEvent,
  PopupBlockedEvent,
  Position,
  PositionError,
  ProcessingInstruction,
  ProgressEvent,
  Promise,
  PropertyNodeList,
  PushManager,
  RGBColor,
  RTCDataChannelEvent,
  RTCPeerConnectionIceEvent,
  RTCStatsReport,
  Range,
  RecordErrorEvent,
  Rect,
  SVGAElement,
  SVGAltGlyphElement,
  SVGAngle,
  SVGAnimateElement,
  SVGAnimateMotionElement,
  SVGAnimateTransformElement,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedEnumeration,
  SVGAnimatedInteger,
  SVGAnimatedLength,
  SVGAnimatedLengthList,
  SVGAnimatedNumber,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedRect,
  SVGAnimatedString,
  SVGAnimatedTransformList,
  SVGAnimationElement,
  SVGCircleElement,
  SVGClipPathElement,
  SVGComponentTransferFunctionElement,
  SVGDefsElement,
  SVGDescElement,
  SVGDocument,
  SVGElement,
  SVGEllipseElement,
  SVGFEBlendElement,
  SVGFEColorMatrixElement,
  SVGFEComponentTransferElement,
  SVGFECompositeElement,
  SVGFEConvolveMatrixElement,
  SVGFEDiffuseLightingElement,
  SVGFEDisplacementMapElement,
  SVGFEDistantLightElement,
  SVGFEFloodElement,
  SVGFEFuncAElement,
  SVGFEFuncBElement,
  SVGFEFuncGElement,
  SVGFEFuncRElement,
  SVGFEGaussianBlurElement,
  SVGFEImageElement,
  SVGFEMergeElement,
  SVGFEMergeNodeElement,
  SVGFEMorphologyElement,
  SVGFEOffsetElement,
  SVGFEPointLightElement,
  SVGFESpecularLightingElement,
  SVGFESpotLightElement,
  SVGFETileElement,
  SVGFETurbulenceElement,
  SVGFilterElement,
  SVGForeignObjectElement,
  SVGGElement,
  SVGGradientElement,
  SVGGraphicsElement,
  SVGImageElement,
  SVGLengthList,
  SVGLineElement,
  SVGLinearGradientElement,
  SVGMPathElement,
  SVGMarkerElement,
  SVGMaskElement,
  SVGMatrix,
  SVGMetadataElement,
  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,
  ScriptProcessorNode,
  ScrollAreaEvent,
  SettingsLock,
  SettingsManager,
  SharedWorker,
  SimpleGestureEvent,
  SmartCardEvent,
  SourceBuffer,
  SourceBufferList,
  SpeechGrammar,
  SpeechGrammarList,
  SpeechRecognition,
  SpeechRecognitionAlternative,
  SpeechRecognitionError,
  SpeechRecognitionEvent,
  SpeechRecognitionResult,
  SpeechRecognitionResultList,
  SpeechSynthesis,
  SpeechSynthesisEvent,
  SpeechSynthesisUtterance,
  SpeechSynthesisVoice,
  StorageEvent,
  StyleRuleChangeEvent,
  StyleSheet,
  StyleSheetApplicableStateChangeEvent,
  StyleSheetChangeEvent,
  Telephony,
  TelephonyCall,
  TelephonyCallGroup,
  Text,
  TextDecoder,
  TextEncoder,
  TextMetrics,
  TextTrack,
  TextTrackCueList,
  TextTrackList,
  TimeEvent,
  TimeRanges,
  Touch,
  TouchEvent,
  TouchList,
  TrackEvent,
  TransitionEvent,
  TreeColumns,
  TreeWalker,
  UIEvent,
  URL,
  URL_workers,
  UndoManager,
  UserProximityEvent,
  VTTCue,
  VTTRegion,
  VTTRegionList,
  ValidityState,
  VideoPlaybackQuality,
  VideoStreamTrack,
  WaveShaperNode,
  WebGL2RenderingContext,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLExtensionCompressedTextureATC,
  WebGLExtensionCompressedTexturePVRTC,
  WebGLExtensionCompressedTextureS3TC,
  WebGLExtensionDebugRendererInfo,
  WebGLExtensionDepthTexture,
  WebGLExtensionDrawBuffers,
  WebGLExtensionElementIndexUint,
  WebGLExtensionInstancedArrays,
  WebGLExtensionLoseContext,
  WebGLExtensionStandardDerivatives,
  WebGLExtensionTextureFilterAnisotropic,
  WebGLExtensionTextureFloat,
  WebGLExtensionTextureFloatLinear,
  WebGLExtensionVertexArray,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLQuery,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLTexture,
  WebGLUniformLocation,
  WebGLVertexArray,
  WebSocket,
  WheelEvent,
  Window,
  WorkerLocation_workers,
  WorkerMessagePort,
  WorkerMessagePort_workers,
  WorkerNavigator_workers,
  XMLDocument,
  XMLHttpRequest,
  XMLHttpRequestEventTarget,
  XMLHttpRequestEventTarget_workers,
  XMLHttpRequestUpload,
  XMLHttpRequestUpload_workers,
  XMLHttpRequest_workers,
  XMLSerializer,
  XMLStylesheetProcessingInstruction,
  XPathEvaluator,
  XULCommandEvent,
  XULDocument,
  XULElement,
  mozContact,
  mozRTCIceCandidate,
  mozRTCPeerConnection,
  mozRTCSessionDescription,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

#define INTERFACE_CHAIN_1(_iface_1) \
  { \
    _iface_1, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count, \
    prototypes::id::_ID_Count \
  }

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

#define MAX_PROTOTYPE_CHAIN_LENGTH 8

namespace mozilla {
namespace dom {
namespace constructors {

namespace id {

enum ID
{
  _ID_Start = prototypes::id::_ID_Count,
  AnalyserNode = _ID_Start,
  AnimationEvent,
  ArchiveReader,
  ArchiveRequest,
  Attr,
  AudioBuffer,
  AudioBufferSourceNode,
  AudioContext,
  AudioDestinationNode,
  AudioListener,
  AudioNode,
  AudioParam,
  AudioProcessingEvent,
  AudioStreamTrack,
  BarProp,
  BatteryManager,
  BeforeUnloadEvent,
  BiquadFilterNode,
  BlobEvent,
  CDATASection,
  CSS,
  CSS2Properties,
  CSSPrimitiveValue,
  CSSStyleDeclaration,
  CSSStyleSheet,
  CSSValue,
  CSSValueList,
  CallEvent,
  CameraControl,
  CameraManager,
  CanvasGradient,
  CanvasPattern,
  CanvasRenderingContext2D,
  CaretPosition,
  ChannelMergerNode,
  ChannelSplitterNode,
  CharacterData,
  ClipboardEvent,
  CloseEvent,
  CommandEvent,
  Comment,
  CompositionEvent,
  ContactAddress,
  ContactField,
  ContactTelField,
  ConvolverNode,
  Crypto,
  CustomEvent,
  DOMCursor,
  DOMError,
  DOMException,
  DOMImplementation,
  DOMMMIError,
  DOMParser,
  DOMRect,
  DOMRectList,
  DOMRequest,
  DOMSettableTokenList,
  DOMStringMap,
  DOMTokenList,
  DOMTransactionEvent,
  DataChannel,
  DataContainerEvent,
  DataStore,
  DataStoreChangeEvent,
  DataStoreCursor,
  DelayNode,
  DesktopNotification,
  DesktopNotificationCenter,
  DeviceLightEvent,
  DeviceMotionEvent,
  DeviceOrientationEvent,
  DeviceProximityEvent,
  DeviceStorage,
  DeviceStorageChangeEvent,
  Document,
  DocumentFragment,
  DocumentType,
  Document_workers,
  DragEvent,
  DummyInterface,
  DummyInterfaceWorkers_workers,
  DynamicsCompressorNode,
  Element,
  ElementReplaceEvent,
  ErrorEvent,
  Event,
  EventSource,
  EventTarget,
  EventTarget_workers,
  Event_workers,
  FileHandle,
  FileList,
  FileReader,
  FileReaderSync_workers,
  FileRequest,
  FocusEvent,
  FormData,
  FormData_workers,
  GainNode,
  Gamepad,
  GamepadAxisMoveEvent,
  GamepadButton,
  GamepadButtonEvent,
  GamepadEvent,
  HTMLAnchorElement,
  HTMLAppletElement,
  HTMLAreaElement,
  HTMLAudioElement,
  HTMLBRElement,
  HTMLBaseElement,
  HTMLBodyElement,
  HTMLButtonElement,
  HTMLCanvasElement,
  HTMLCollection,
  HTMLDListElement,
  HTMLDataElement,
  HTMLDataListElement,
  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,
  HTMLPreElement,
  HTMLProgressElement,
  HTMLPropertiesCollection,
  HTMLQuoteElement,
  HTMLScriptElement,
  HTMLSelectElement,
  HTMLSourceElement,
  HTMLSpanElement,
  HTMLStyleElement,
  HTMLTableCaptionElement,
  HTMLTableCellElement,
  HTMLTableColElement,
  HTMLTableElement,
  HTMLTableRowElement,
  HTMLTableSectionElement,
  HTMLTemplateElement,
  HTMLTextAreaElement,
  HTMLTimeElement,
  HTMLTitleElement,
  HTMLTrackElement,
  HTMLUListElement,
  HTMLUnknownElement,
  HTMLVideoElement,
  HashChangeEvent,
  History,
  IDBCursor,
  IDBCursorWithValue,
  IDBDatabase,
  IDBFactory,
  IDBFileHandle,
  IDBIndex,
  IDBKeyRange,
  IDBObjectStore,
  IDBOpenDBRequest,
  IDBRequest,
  IDBTransaction,
  IDBVersionChangeEvent,
  ImageData,
  ImageDocument,
  KeyEvent,
  KeyboardEvent,
  LocalMediaStream,
  Location,
  MediaElementAudioSourceNode,
  MediaError,
  MediaRecorder,
  MediaSource,
  MediaSource_workers,
  MediaStream,
  MediaStreamAudioDestinationNode,
  MediaStreamAudioSourceNode,
  MediaStreamEvent,
  MediaStreamList,
  MediaStreamTrack,
  MediaStream_workers,
  MessageChannel,
  MessageEvent,
  MessagePort,
  MimeType,
  MimeTypeArray,
  MouseEvent,
  MouseScrollEvent,
  MozActivity,
  MozApplicationEvent,
  MozCanvasPrintState,
  MozContactChangeEvent,
  MozInputContext,
  MozInputMethod,
  MozInputMethodManager,
  MozInterAppConnection,
  MozInterAppConnectionRequest,
  MozInterAppMessageEvent,
  MozInterAppMessagePort,
  MozMmsEvent,
  MozNamedAttrMap,
  MozPowerManager,
  MozSettingsEvent,
  MozSmsEvent,
  MozTimeManager,
  MutationEvent,
  MutationObserver,
  MutationRecord,
  Navigator,
  Node,
  NodeFilter,
  NodeIterator,
  NodeList,
  Notification,
  NotifyAudioAvailableEvent,
  NotifyPaintEvent,
  OfflineAudioCompletionEvent,
  OfflineAudioContext,
  OfflineResourceList,
  OscillatorNode,
  PageTransitionEvent,
  PaintRequest,
  PaintRequestList,
  PannerNode,
  PeerConnectionImpl,
  PeerConnectionObserver,
  Performance,
  PerformanceNavigation,
  PerformanceTiming,
  PeriodicWave,
  PhoneNumberService,
  Plugin,
  PluginArray,
  PopStateEvent,
  PopupBlockedEvent,
  ProcessingInstruction,
  ProgressEvent,
  Promise,
  PropertyNodeList,
  RGBColor,
  RTCDataChannelEvent,
  RTCPeerConnectionIceEvent,
  RTCStatsReport,
  Range,
  RecordErrorEvent,
  Rect,
  SVGAElement,
  SVGAltGlyphElement,
  SVGAngle,
  SVGAnimateElement,
  SVGAnimateMotionElement,
  SVGAnimateTransformElement,
  SVGAnimatedAngle,
  SVGAnimatedBoolean,
  SVGAnimatedEnumeration,
  SVGAnimatedInteger,
  SVGAnimatedLength,
  SVGAnimatedLengthList,
  SVGAnimatedNumber,
  SVGAnimatedNumberList,
  SVGAnimatedPreserveAspectRatio,
  SVGAnimatedRect,
  SVGAnimatedString,
  SVGAnimatedTransformList,
  SVGAnimationElement,
  SVGCircleElement,
  SVGClipPathElement,
  SVGComponentTransferFunctionElement,
  SVGDefsElement,
  SVGDescElement,
  SVGDocument,
  SVGElement,
  SVGEllipseElement,
  SVGFEBlendElement,
  SVGFEColorMatrixElement,
  SVGFEComponentTransferElement,
  SVGFECompositeElement,
  SVGFEConvolveMatrixElement,
  SVGFEDiffuseLightingElement,
  SVGFEDisplacementMapElement,
  SVGFEDistantLightElement,
  SVGFEFloodElement,
  SVGFEFuncAElement,
  SVGFEFuncBElement,
  SVGFEFuncGElement,
  SVGFEFuncRElement,
  SVGFEGaussianBlurElement,
  SVGFEImageElement,
  SVGFEMergeElement,
  SVGFEMergeNodeElement,
  SVGFEMorphologyElement,
  SVGFEOffsetElement,
  SVGFEPointLightElement,
  SVGFESpecularLightingElement,
  SVGFESpotLightElement,
  SVGFETileElement,
  SVGFETurbulenceElement,
  SVGFilterElement,
  SVGForeignObjectElement,
  SVGGElement,
  SVGGradientElement,
  SVGGraphicsElement,
  SVGImageElement,
  SVGLengthList,
  SVGLineElement,
  SVGLinearGradientElement,
  SVGMPathElement,
  SVGMarkerElement,
  SVGMaskElement,
  SVGMatrix,
  SVGMetadataElement,
  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,
  ScriptProcessorNode,
  ScrollAreaEvent,
  SettingsLock,
  SettingsManager,
  SharedWorker,
  SimpleGestureEvent,
  SmartCardEvent,
  SourceBuffer,
  SourceBufferList,
  SpeechGrammar,
  SpeechGrammarList,
  SpeechRecognition,
  SpeechRecognitionAlternative,
  SpeechRecognitionError,
  SpeechRecognitionEvent,
  SpeechRecognitionResult,
  SpeechRecognitionResultList,
  SpeechSynthesis,
  SpeechSynthesisEvent,
  SpeechSynthesisUtterance,
  SpeechSynthesisVoice,
  StorageEvent,
  StyleRuleChangeEvent,
  StyleSheet,
  StyleSheetApplicableStateChangeEvent,
  StyleSheetChangeEvent,
  Telephony,
  TelephonyCall,
  TelephonyCallGroup,
  Text,
  TextDecoder,
  TextEncoder,
  TextMetrics,
  TextTrack,
  TextTrackCueList,
  TextTrackList,
  TimeEvent,
  TimeRanges,
  Touch,
  TouchEvent,
  TouchList,
  TrackEvent,
  TransitionEvent,
  TreeColumns,
  TreeWalker,
  UIEvent,
  URL,
  URL_workers,
  UndoManager,
  UserProximityEvent,
  VTTCue,
  VTTRegion,
  VTTRegionList,
  ValidityState,
  VideoPlaybackQuality,
  VideoStreamTrack,
  WaveShaperNode,
  WebGL2RenderingContext,
  WebGLActiveInfo,
  WebGLBuffer,
  WebGLFramebuffer,
  WebGLProgram,
  WebGLQuery,
  WebGLRenderbuffer,
  WebGLRenderingContext,
  WebGLShader,
  WebGLShaderPrecisionFormat,
  WebGLTexture,
  WebGLUniformLocation,
  WebGLVertexArray,
  WebSocket,
  WheelEvent,
  Window,
  WorkerLocation_workers,
  WorkerMessagePort,
  WorkerMessagePort_workers,
  WorkerNavigator_workers,
  XMLDocument,
  XMLHttpRequest,
  XMLHttpRequestUpload,
  XMLHttpRequestUpload_workers,
  XMLHttpRequest_workers,
  XMLSerializer,
  XMLStylesheetProcessingInstruction,
  XPathEvaluator,
  XULCommandEvent,
  XULDocument,
  XULElement,
  mozContact,
  mozRTCIceCandidate,
  mozRTCPeerConnection,
  mozRTCSessionDescription,
  _ID_Count
};

} // namespace id

typedef id::ID ID;

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

namespace mozilla {
namespace dom {

template <prototypes::ID PrototypeID>
struct PrototypeTraits;

template <>
struct PrototypeTraits<prototypes::id::AnalyserNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::AnimationEvent>
{
  enum
  {
    Depth = 1
  };
};

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 = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::BarProp>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::BatteryManager>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::BeforeUnloadEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::BiquadFilterNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::BlobEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::CDATASection>
{
  enum
  {
    Depth = 4
  };
};

template <>
struct PrototypeTraits<prototypes::id::CSS2Properties>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::CSSPrimitiveValue>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::CSSStyleDeclaration>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::CSSStyleSheet>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::CSSValue>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::CSSValueList>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::CallEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::CallsList>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::CameraControl>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::CameraManager>
{
  enum
  {
    Depth = 0
  };
};

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::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::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::ContactAddress>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::ContactField>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::ContactManager>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::ContactTelField>
{
  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::Crypto>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::CustomEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMCursor>
{
  enum
  {
    Depth = 2
  };
};

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::DOMMMIError>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMParser>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMRect>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMRectList>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMRequest>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMSettableTokenList>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMStringMap>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMTokenList>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::DOMTransactionEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DataChannel>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DataContainerEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DataStore>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DataStoreChangeEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DataStoreCursor>
{
  enum
  {
    Depth = 0
  };
};

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::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::DeviceStorage>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DeviceStorageChangeEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::Document>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::DocumentFragment>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::DocumentType>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::Document_workers>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::DragEvent>
{
  enum
  {
    Depth = 3
  };
};

template <>
struct PrototypeTraits<prototypes::id::DummyInterface>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::DummyInterfaceWorkers_workers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::DynamicsCompressorNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::Element>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::ElementReplaceEvent>
{
  enum
  {
    Depth = 1
  };
};

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::EventTarget_workers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::Event_workers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::Exception>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::FileHandle>
{
  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_workers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::FileRequest>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::FocusEvent>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::FormData>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::FormData_workers>
{
  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::Geolocation>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::GetUserMediaRequest>
{
  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::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::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::HTMLPreElement>
{
  enum
  {
    Depth = 4
  };
};

template <>
struct PrototypeTraits<prototypes::id::HTMLProgressElement>
{
  enum
  {
    Depth = 4
  };
};

template <>
struct PrototypeTraits<prototypes::id::HTMLPropertiesCollection>
{
  enum
  {
    Depth = 1
  };
};

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::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::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 = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::IDBIndex>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::IDBKeyRange>
{
  enum
  {
    Depth = 0
  };
};

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::ImageData>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::ImageDocument>
{
  enum
  {
    Depth = 4
  };
};

template <>
struct PrototypeTraits<prototypes::id::KeyboardEvent>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::LocalMediaStream>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::Location>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MediaElementAudioSourceNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::MediaError>
{
  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::MediaSource_workers>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MediaStream>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MediaStreamAudioDestinationNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::MediaStreamAudioSourceNode>
{
  enum
  {
    Depth = 2
  };
};

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 = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MediaStream_workers>
{
  enum
  {
    Depth = 0
  };
};

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::MessagePortList>
{
  enum
  {
    Depth = 0
  };
};

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::MozActivity>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozApplicationEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozCanvasPrintState>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozContactChangeEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInputContext>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInputMethod>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInputMethodManager>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInterAppConnection>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInterAppConnectionRequest>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInterAppMessageEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozInterAppMessagePort>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozMmsEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozNamedAttrMap>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozPowerManager>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozSettingsEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozSmsEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::MozTimeManager>
{
  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::Navigator>
{
  enum
  {
    Depth = 0
  };
};

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::NotifyAudioAvailableEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::NotifyPaintEvent>
{
  enum
  {
    Depth = 1
  };
};

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::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::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::PerformanceNavigation>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::PerformanceTiming>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::PeriodicWave>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::PhoneNumberService>
{
  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::PopStateEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::PopupBlockedEvent>
{
  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::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::PropertyNodeList>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::PushManager>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::RGBColor>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::RTCDataChannelEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::RTCPeerConnectionIceEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::RTCStatsReport>
{
  enum
  {
    Depth = 0
  };
};

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::SVGAElement>
{
  enum
  {
    Depth = 5
  };
};

template <>
struct PrototypeTraits<prototypes::id::SVGAltGlyphElement>
{
  enum
  {
    Depth = 7
  };
};

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::SVGDocument>
{
  enum
  {
    Depth = 3
  };
};

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::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::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::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::ScriptProcessorNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::ScrollAreaEvent>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::SettingsLock>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::SettingsManager>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::SharedWorker>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::SimpleGestureEvent>
{
  enum
  {
    Depth = 3
  };
};

template <>
struct PrototypeTraits<prototypes::id::SmartCardEvent>
{
  enum
  {
    Depth = 1
  };
};

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 = 0
  };
};

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::StorageEvent>
{
  enum
  {
    Depth = 1
  };
};

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::Telephony>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::TelephonyCall>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::TelephonyCallGroup>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::Text>
{
  enum
  {
    Depth = 3
  };
};

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::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::TreeColumns>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::TreeWalker>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::UIEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::URL>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::URL_workers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::UndoManager>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::UserProximityEvent>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::VTTCue>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::VTTRegion>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::VTTRegionList>
{
  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 = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::WaveShaperNode>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGL2RenderingContext>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLActiveInfo>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLBuffer>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionCompressedTextureATC>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionCompressedTexturePVRTC>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionCompressedTextureS3TC>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionDebugRendererInfo>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionDepthTexture>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionDrawBuffers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionElementIndexUint>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionInstancedArrays>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionLoseContext>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionStandardDerivatives>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionTextureFilterAnisotropic>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionTextureFloat>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionTextureFloatLinear>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLExtensionVertexArray>
{
  enum
  {
    Depth = 0
  };
};

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::WebGLShader>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLShaderPrecisionFormat>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLTexture>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLUniformLocation>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WebGLVertexArray>
{
  enum
  {
    Depth = 0
  };
};

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::WorkerLocation_workers>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::WorkerMessagePort>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::WorkerMessagePort_workers>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::WorkerNavigator_workers>
{
  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::XMLHttpRequestEventTarget_workers>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::XMLHttpRequestUpload>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::XMLHttpRequestUpload_workers>
{
  enum
  {
    Depth = 2
  };
};

template <>
struct PrototypeTraits<prototypes::id::XMLHttpRequest_workers>
{
  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::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::mozContact>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::mozRTCIceCandidate>
{
  enum
  {
    Depth = 0
  };
};

template <>
struct PrototypeTraits<prototypes::id::mozRTCPeerConnection>
{
  enum
  {
    Depth = 1
  };
};

template <>
struct PrototypeTraits<prototypes::id::mozRTCSessionDescription>
{
  enum
  {
    Depth = 0
  };
};
} // namespace dom
} // namespace mozilla

#endif // mozilla_dom_PrototypeList_h__
