From b337f9e39379d781db56c6c9d73b28a9ade7e230 Mon Sep 17 00:00:00 2001
From: Frederik Carlier <frederik.carlier@quamotion.mobi>
Date: Wed, 3 Aug 2016 12:29:51 +0200
Subject: [PATCH 1/3] Add support for iOS devices. Create separate namespaces
 for the Chrome and iOS versions of the WebKit debugger protocol.

---
 .../MasterDevs.ChromeDevTools.csproj          | 804 +-----------------
 .../Accessibility/AXGlobalStates.cs           |   2 +-
 .../Accessibility/AXLiveRegionAttributes.cs   |   2 +-
 .../{ => Chrome}/Accessibility/AXNode.cs      |   3 +-
 .../{ => Chrome}/Accessibility/AXProperty.cs  |   3 +-
 .../Accessibility/AXPropertySource.cs         |   3 +-
 .../Accessibility/AXPropertySourceType.cs     |   2 +-
 .../Accessibility/AXRelatedNode.cs            |   3 +-
 .../Accessibility/AXRelationshipAttributes.cs |   2 +-
 .../{ => Chrome}/Accessibility/AXValue.cs     |   3 +-
 .../{ => Chrome}/Accessibility/AXValueType.cs |   2 +-
 .../Accessibility/AXWidgetAttributes.cs       |   2 +-
 .../Accessibility/AXWidgetStates.cs           |   2 +-
 .../Accessibility/GetAXNodeCommand.cs         |   3 +-
 .../Accessibility/GetAXNodeCommandResponse.cs |   3 +-
 .../{ => Chrome}/Animation/AnimationNode.cs   |   3 +-
 .../{ => Chrome}/Animation/AnimationPlayer.cs |   3 +-
 .../Animation/AnimationPlayerCanceledEvent.cs |   3 +-
 .../Animation/AnimationPlayerCreatedEvent.cs  |   3 +-
 .../{ => Chrome}/Animation/EnableCommand.cs   |   3 +-
 .../Animation/EnableCommandResponse.cs        |   3 +-
 .../GetAnimationPlayersForNodeCommand.cs      |   3 +-
 ...tAnimationPlayersForNodeCommandResponse.cs |   3 +-
 .../Animation/GetPlaybackRateCommand.cs       |   3 +-
 .../GetPlaybackRateCommandResponse.cs         |   3 +-
 .../{ => Chrome}/Animation/KeyframeStyle.cs   |   3 +-
 .../{ => Chrome}/Animation/KeyframesRule.cs   |   3 +-
 .../Animation/SetCurrentTimeCommand.cs        |   3 +-
 .../SetCurrentTimeCommandResponse.cs          |   3 +-
 .../Animation/SetPlaybackRateCommand.cs       |   3 +-
 .../SetPlaybackRateCommandResponse.cs         |   3 +-
 .../Animation/SetTimingCommand.cs             |   3 +-
 .../Animation/SetTimingCommandResponse.cs     |   3 +-
 .../ApplicationCache/ApplicationCache.cs      |  34 +
 .../ApplicationCacheResource.cs               |  26 +
 .../ApplicationCacheStatusUpdatedEvent.cs     |  22 +
 .../Chrome/ApplicationCache/EnableCommand.cs  |  15 +
 .../ApplicationCache/EnableCommandResponse.cs |  15 +
 .../ApplicationCache/FrameWithManifest.cs     |  26 +
 .../GetApplicationCacheForFrameCommand.cs     |  19 +
 ...ApplicationCacheForFrameCommandResponse.cs |  19 +
 .../GetFramesWithManifestsCommand.cs          |  15 +
 .../GetFramesWithManifestsCommandResponse.cs  |  19 +
 .../GetManifestForFrameCommand.cs             |  19 +
 .../GetManifestForFrameCommandResponse.cs     |  19 +
 .../NetworkStateUpdatedEvent.cs               |  14 +
 .../{ => Chrome}/CSS/AddRuleCommand.cs        |   3 +-
 .../CSS/AddRuleCommandResponse.cs             |   3 +-
 .../Chrome/CSS/CSSComputedStyleProperty.cs    |  22 +
 .../Protocol/{ => Chrome}/CSS/CSSMedia.cs     |   3 +-
 .../Protocol/{ => Chrome}/CSS/CSSProperty.cs  |   3 +-
 .../Protocol/{ => Chrome}/CSS/CSSRule.cs      |   3 +-
 .../Protocol/{ => Chrome}/CSS/CSSStyle.cs     |   3 +-
 .../{ => Chrome}/CSS/CSSStyleSheetHeader.cs   |   3 +-
 .../CSS/CreateStyleSheetCommand.cs            |   3 +-
 .../CSS/CreateStyleSheetCommandResponse.cs    |   3 +-
 .../Protocol/Chrome/CSS/DisableCommand.cs     |  15 +
 .../Chrome/CSS/DisableCommandResponse.cs      |  15 +
 .../Protocol/Chrome/CSS/EnableCommand.cs      |  15 +
 .../Chrome/CSS/EnableCommandResponse.cs       |  15 +
 .../Chrome/CSS/ForcePseudoStateCommand.cs     |  23 +
 .../CSS/ForcePseudoStateCommandResponse.cs    |  15 +
 .../CSS/GetComputedStyleForNodeCommand.cs     |  19 +
 .../GetComputedStyleForNodeCommandResponse.cs |  19 +
 .../CSS/GetInlineStylesForNodeCommand.cs      |  19 +
 .../GetInlineStylesForNodeCommandResponse.cs  |  23 +
 .../CSS/GetMatchedStylesForNodeCommand.cs     |   3 +-
 .../GetMatchedStylesForNodeCommandResponse.cs |  27 +
 .../CSS/GetMediaQueriesCommand.cs             |   3 +-
 .../CSS/GetMediaQueriesCommandResponse.cs     |   3 +-
 .../CSS/GetPlatformFontsForNodeCommand.cs     |   3 +-
 .../GetPlatformFontsForNodeCommandResponse.cs |   3 +-
 .../Chrome/CSS/GetStyleSheetTextCommand.cs    |  19 +
 .../CSS/GetStyleSheetTextCommandResponse.cs   |  19 +
 .../{ => Chrome}/CSS/InheritedStyleEntry.cs   |   3 +-
 .../Protocol/{ => Chrome}/CSS/MediaQuery.cs   |   3 +-
 .../{ => Chrome}/CSS/MediaQueryExpression.cs  |   3 +-
 .../CSS/MediaQueryResultChangedEvent.cs       |  13 +
 .../{ => Chrome}/CSS/PlatformFontUsage.cs     |   3 +-
 .../{ => Chrome}/CSS/PseudoIdMatches.cs       |   3 +-
 .../Protocol/Chrome/CSS/RuleMatch.cs          |  22 +
 .../Protocol/{ => Chrome}/CSS/Selector.cs     |   3 +-
 .../Protocol/{ => Chrome}/CSS/SelectorList.cs |   3 +-
 .../{ => Chrome}/CSS/SetMediaTextCommand.cs   |   3 +-
 .../CSS/SetMediaTextCommandResponse.cs        |   3 +-
 .../CSS/SetPropertyTextCommand.cs             |   3 +-
 .../CSS/SetPropertyTextCommandResponse.cs     |   3 +-
 .../CSS/SetRuleSelectorCommand.cs             |   3 +-
 .../CSS/SetRuleSelectorCommandResponse.cs     |  19 +
 .../CSS/SetStyleSheetTextCommand.cs           |   3 +-
 .../CSS/SetStyleSheetTextCommandResponse.cs   |   3 +-
 .../Protocol/Chrome/CSS/ShorthandEntry.cs     |  22 +
 .../Protocol/{ => Chrome}/CSS/SourceRange.cs  |   3 +-
 .../Chrome/CSS/StyleSheetAddedEvent.cs        |  17 +
 .../Chrome/CSS/StyleSheetChangedEvent.cs      |  17 +
 .../{ => Chrome}/CSS/StyleSheetOrigin.cs      |   2 +-
 .../Chrome/CSS/StyleSheetRemovedEvent.cs      |  17 +
 .../{ => Chrome}/CacheStorage/Cache.cs        |   3 +-
 .../{ => Chrome}/CacheStorage/DataEntry.cs    |   3 +-
 .../CacheStorage/DeleteCacheCommand.cs        |   3 +-
 .../DeleteCacheCommandResponse.cs             |   3 +-
 .../CacheStorage/RequestCacheNamesCommand.cs  |   3 +-
 .../RequestCacheNamesCommandResponse.cs       |   3 +-
 .../CacheStorage/RequestEntriesCommand.cs     |   3 +-
 .../RequestEntriesCommandResponse.cs          |   3 +-
 .../Protocol/{ => Chrome}/Canvas/Call.cs      |   3 +-
 .../{ => Chrome}/Canvas/CallArgument.cs       |   3 +-
 .../Canvas/CaptureFrameCommand.cs             |   3 +-
 .../Canvas/CaptureFrameCommandResponse.cs     |   3 +-
 .../Canvas/ContextCreatedEvent.cs             |   3 +-
 .../{ => Chrome}/Canvas/DisableCommand.cs     |   3 +-
 .../Canvas/DisableCommandResponse.cs          |   3 +-
 .../Canvas/DropTraceLogCommand.cs             |   3 +-
 .../Canvas/DropTraceLogCommandResponse.cs     |   3 +-
 .../{ => Chrome}/Canvas/EnableCommand.cs      |   3 +-
 .../Canvas/EnableCommandResponse.cs           |   3 +-
 .../EvaluateTraceLogCallArgumentCommand.cs    |   3 +-
 ...uateTraceLogCallArgumentCommandResponse.cs |   3 +-
 .../Canvas/GetResourceStateCommand.cs         |   3 +-
 .../Canvas/GetResourceStateCommandResponse.cs |   3 +-
 .../{ => Chrome}/Canvas/GetTraceLogCommand.cs |   3 +-
 .../Canvas/GetTraceLogCommandResponse.cs      |   3 +-
 .../HasUninstrumentedCanvasesCommand.cs       |   3 +-
 ...asUninstrumentedCanvasesCommandResponse.cs |   3 +-
 .../Canvas/ReplayTraceLogCommand.cs           |   3 +-
 .../Canvas/ReplayTraceLogCommandResponse.cs   |   3 +-
 .../{ => Chrome}/Canvas/ResourceState.cs      |   3 +-
 .../Canvas/ResourceStateDescriptor.cs         |   3 +-
 .../Canvas/StartCapturingCommand.cs           |   3 +-
 .../Canvas/StartCapturingCommandResponse.cs   |   3 +-
 .../Canvas/StopCapturingCommand.cs            |   3 +-
 .../Canvas/StopCapturingCommandResponse.cs    |   3 +-
 .../Protocol/{ => Chrome}/Canvas/TraceLog.cs  |   3 +-
 .../Canvas/TraceLogsRemovedEvent.cs           |   3 +-
 .../{ => Chrome}/Console/AsyncStackTrace.cs   |   3 +-
 .../{ => Chrome}/Console/CallFrame.cs         |   3 +-
 .../Chrome/Console/ClearMessagesCommand.cs    |  15 +
 .../Console/ClearMessagesCommandResponse.cs   |  15 +
 .../{ => Chrome}/Console/ConsoleMessage.cs    |   3 +-
 .../Protocol/Chrome/Console/DisableCommand.cs |  15 +
 .../Chrome/Console/DisableCommandResponse.cs  |  15 +
 .../Protocol/Chrome/Console/EnableCommand.cs  |  15 +
 .../Chrome/Console/EnableCommandResponse.cs   |  15 +
 .../Chrome/Console/MessageAddedEvent.cs       |  17 +
 .../Console/MessageRepeatCountUpdatedEvent.cs |   3 +-
 .../Chrome/Console/MessagesClearedEvent.cs    |  13 +
 .../Chrome/DOM/AttributeModifiedEvent.cs      |  25 +
 .../Chrome/DOM/AttributeRemovedEvent.cs       |  21 +
 .../Protocol/{ => Chrome}/DOM/BackendNode.cs  |   3 +-
 .../Protocol/{ => Chrome}/DOM/BoxModel.cs     |   3 +-
 .../Chrome/DOM/CharacterDataModifiedEvent.cs  |  21 +
 .../Chrome/DOM/ChildNodeCountUpdatedEvent.cs  |  21 +
 .../Chrome/DOM/ChildNodeInsertedEvent.cs      |  25 +
 .../Chrome/DOM/ChildNodeRemovedEvent.cs       |  21 +
 .../{ => Chrome}/DOM/CopyToCommand.cs         |   3 +-
 .../{ => Chrome}/DOM/CopyToCommandResponse.cs |   3 +-
 .../{ => Chrome}/DOM/DisableCommand.cs        |   3 +-
 .../DOM/DisableCommandResponse.cs             |   3 +-
 .../Chrome/DOM/DiscardSearchResultsCommand.cs |  19 +
 .../DiscardSearchResultsCommandResponse.cs    |  15 +
 .../DOM/DistributedNodesUpdatedEvent.cs       |   3 +-
 .../Chrome/DOM/DocumentUpdatedEvent.cs        |  13 +
 .../{ => Chrome}/DOM/EnableCommand.cs         |   3 +-
 .../{ => Chrome}/DOM/EnableCommandResponse.cs |   3 +-
 .../{ => Chrome}/DOM/EventListener.cs         |   3 +-
 .../Protocol/Chrome/DOM/FocusCommand.cs       |  19 +
 .../Chrome/DOM/FocusCommandResponse.cs        |  15 +
 .../Chrome/DOM/GetAttributesCommand.cs        |  19 +
 .../DOM/GetAttributesCommandResponse.cs       |  19 +
 .../{ => Chrome}/DOM/GetBoxModelCommand.cs    |   3 +-
 .../DOM/GetBoxModelCommandResponse.cs         |   3 +-
 .../Protocol/Chrome/DOM/GetDocumentCommand.cs |  15 +
 .../Chrome/DOM/GetDocumentCommandResponse.cs  |  19 +
 .../DOM/GetEventListenersForNodeCommand.cs    |  23 +
 ...GetEventListenersForNodeCommandResponse.cs |  19 +
 .../DOM/GetHighlightObjectForTestCommand.cs   |   3 +-
 ...etHighlightObjectForTestCommandResponse.cs |   3 +-
 .../DOM/GetNodeForLocationCommand.cs          |   3 +-
 .../DOM/GetNodeForLocationCommandResponse.cs  |   3 +-
 .../Chrome/DOM/GetOuterHTMLCommand.cs         |  19 +
 .../Chrome/DOM/GetOuterHTMLCommandResponse.cs |  19 +
 .../DOM/GetRelayoutBoundaryCommand.cs         |   3 +-
 .../DOM/GetRelayoutBoundaryCommandResponse.cs |   3 +-
 .../Chrome/DOM/GetSearchResultsCommand.cs     |  27 +
 .../DOM/GetSearchResultsCommandResponse.cs    |  19 +
 .../Chrome/DOM/HideHighlightCommand.cs        |  15 +
 .../DOM/HideHighlightCommandResponse.cs       |  15 +
 .../{ => Chrome}/DOM/HighlightConfig.cs       |   3 +-
 .../{ => Chrome}/DOM/HighlightFrameCommand.cs |   3 +-
 .../DOM/HighlightFrameCommandResponse.cs      |  15 +
 .../{ => Chrome}/DOM/HighlightNodeCommand.cs  |   3 +-
 .../DOM/HighlightNodeCommandResponse.cs       |  15 +
 .../{ => Chrome}/DOM/HighlightQuadCommand.cs  |   3 +-
 .../DOM/HighlightQuadCommandResponse.cs       |  15 +
 .../{ => Chrome}/DOM/HighlightRectCommand.cs  |   3 +-
 .../DOM/HighlightRectCommandResponse.cs       |  15 +
 .../Chrome/DOM/InlineStyleInvalidatedEvent.cs |  17 +
 .../DOM/InspectNodeRequestedEvent.cs          |   3 +-
 .../Chrome/DOM/MarkUndoableStateCommand.cs    |  15 +
 .../DOM/MarkUndoableStateCommandResponse.cs   |  15 +
 .../{ => Chrome}/DOM/MoveToCommand.cs         |   3 +-
 .../Chrome/DOM/MoveToCommandResponse.cs       |  19 +
 .../Protocol/{ => Chrome}/DOM/Node.cs         |   3 +-
 .../{ => Chrome}/DOM/PerformSearchCommand.cs  |   3 +-
 .../DOM/PerformSearchCommandResponse.cs       |  23 +
 .../Chrome/DOM/PseudoElementAddedEvent.cs     |  21 +
 .../Chrome/DOM/PseudoElementRemovedEvent.cs   |  21 +
 .../Protocol/{ => Chrome}/DOM/PseudoType.cs   |   2 +-
 .../DOM/PushNodeByPathToFrontendCommand.cs    |  19 +
 ...PushNodeByPathToFrontendCommandResponse.cs |  19 +
 .../PushNodesByBackendIdsToFrontendCommand.cs |   3 +-
 ...esByBackendIdsToFrontendCommandResponse.cs |   3 +-
 .../Chrome/DOM/QuerySelectorAllCommand.cs     |  23 +
 .../DOM/QuerySelectorAllCommandResponse.cs    |  19 +
 .../Chrome/DOM/QuerySelectorCommand.cs        |  23 +
 .../DOM/QuerySelectorCommandResponse.cs       |  19 +
 .../Protocol/{ => Chrome}/DOM/RGBA.cs         |   3 +-
 .../Protocol/{ => Chrome}/DOM/Rect.cs         |   3 +-
 .../Protocol/Chrome/DOM/RedoCommand.cs        |  15 +
 .../Chrome/DOM/RedoCommandResponse.cs         |  15 +
 .../Chrome/DOM/RemoveAttributeCommand.cs      |  23 +
 .../DOM/RemoveAttributeCommandResponse.cs     |  15 +
 .../Protocol/Chrome/DOM/RemoveNodeCommand.cs  |  19 +
 .../Chrome/DOM/RemoveNodeCommandResponse.cs   |  15 +
 .../Chrome/DOM/RequestChildNodesCommand.cs    |  23 +
 .../DOM/RequestChildNodesCommandResponse.cs   |  15 +
 .../Protocol/Chrome/DOM/RequestNodeCommand.cs |  19 +
 .../Chrome/DOM/RequestNodeCommandResponse.cs  |  19 +
 .../Protocol/Chrome/DOM/ResolveNodeCommand.cs |  23 +
 .../Chrome/DOM/ResolveNodeCommandResponse.cs  |  19 +
 .../Chrome/DOM/SetAttributeValueCommand.cs    |  27 +
 .../DOM/SetAttributeValueCommandResponse.cs   |  15 +
 .../Chrome/DOM/SetAttributesAsTextCommand.cs  |  27 +
 .../DOM/SetAttributesAsTextCommandResponse.cs |  15 +
 .../Protocol/Chrome/DOM/SetChildNodesEvent.cs |  21 +
 .../DOM/SetFileInputFilesCommand.cs           |   3 +-
 .../DOM/SetFileInputFilesCommandResponse.cs   |   3 +-
 .../DOM/SetInspectModeEnabledCommand.cs       |   3 +-
 .../SetInspectModeEnabledCommandResponse.cs   |   3 +-
 .../DOM/SetInspectedNodeCommand.cs            |   3 +-
 .../DOM/SetInspectedNodeCommandResponse.cs    |   3 +-
 .../Protocol/Chrome/DOM/SetNodeNameCommand.cs |  23 +
 .../Chrome/DOM/SetNodeNameCommandResponse.cs  |  19 +
 .../Chrome/DOM/SetNodeValueCommand.cs         |  23 +
 .../Chrome/DOM/SetNodeValueCommandResponse.cs |  15 +
 .../Chrome/DOM/SetOuterHTMLCommand.cs         |  23 +
 .../Chrome/DOM/SetOuterHTMLCommandResponse.cs |  15 +
 .../Chrome/DOM/ShadowRootPoppedEvent.cs       |  21 +
 .../Chrome/DOM/ShadowRootPushedEvent.cs       |  21 +
 .../{ => Chrome}/DOM/ShadowRootType.cs        |   2 +-
 .../{ => Chrome}/DOM/ShapeOutsideInfo.cs      |   3 +-
 .../Protocol/Chrome/DOM/UndoCommand.cs        |  15 +
 .../Chrome/DOM/UndoCommandResponse.cs         |  15 +
 .../Chrome/DOMDebugger/DOMBreakpointType.cs   |  13 +
 .../DOMDebugger/RemoveDOMBreakpointCommand.cs |  23 +
 .../RemoveDOMBreakpointCommandResponse.cs     |  15 +
 .../RemoveEventListenerBreakpointCommand.cs   |   3 +-
 ...eEventListenerBreakpointCommandResponse.cs |  15 +
 .../RemoveInstrumentationBreakpointCommand.cs |   3 +-
 ...nstrumentationBreakpointCommandResponse.cs |   3 +-
 .../DOMDebugger/RemoveXHRBreakpointCommand.cs |  19 +
 .../RemoveXHRBreakpointCommandResponse.cs     |  15 +
 .../DOMDebugger/SetDOMBreakpointCommand.cs    |  23 +
 .../SetDOMBreakpointCommandResponse.cs        |  15 +
 .../SetEventListenerBreakpointCommand.cs      |   3 +-
 ...tEventListenerBreakpointCommandResponse.cs |  15 +
 .../SetInstrumentationBreakpointCommand.cs    |  19 +
 ...nstrumentationBreakpointCommandResponse.cs |  15 +
 .../DOMDebugger/SetXHRBreakpointCommand.cs    |  19 +
 .../SetXHRBreakpointCommandResponse.cs        |  15 +
 .../Chrome/DOMStorage/DisableCommand.cs       |  15 +
 .../DOMStorage/DisableCommandResponse.cs      |  15 +
 .../DOMStorage/DomStorageItemAddedEvent.cs    |  22 +
 .../DOMStorage/DomStorageItemRemovedEvent.cs  |  18 +
 .../DOMStorage/DomStorageItemUpdatedEvent.cs  |  26 +
 .../DOMStorage/DomStorageItemsClearedEvent.cs |  14 +
 .../Chrome/DOMStorage/EnableCommand.cs        |  15 +
 .../DOMStorage/EnableCommandResponse.cs       |  15 +
 .../DOMStorage/GetDOMStorageItemsCommand.cs   |  16 +
 .../GetDOMStorageItemsCommandResponse.cs      |  16 +
 .../DOMStorage/RemoveDOMStorageItemCommand.cs |  20 +
 .../RemoveDOMStorageItemCommandResponse.cs    |  12 +
 .../DOMStorage/SetDOMStorageItemCommand.cs    |  24 +
 .../SetDOMStorageItemCommandResponse.cs       |  12 +
 .../Protocol/Chrome/DOMStorage/StorageId.cs   |  22 +
 .../Chrome/Database/AddDatabaseEvent.cs       |  14 +
 .../Protocol/Chrome/Database/Database.cs      |  30 +
 .../Chrome/Database/DisableCommand.cs         |  15 +
 .../Chrome/Database/DisableCommandResponse.cs |  15 +
 .../Protocol/Chrome/Database/EnableCommand.cs |  15 +
 .../Chrome/Database/EnableCommandResponse.cs  |  15 +
 .../Protocol/Chrome/Database/Error.cs         |  22 +
 .../Chrome/Database/ExecuteSQLCommand.cs      |  20 +
 .../Database/ExecuteSQLCommandResponse.cs     |  24 +
 .../Database/GetDatabaseTableNamesCommand.cs  |  16 +
 .../GetDatabaseTableNamesCommandResponse.cs   |  16 +
 .../{ => Chrome}/Debugger/AsyncOperation.cs   |   3 +-
 .../Debugger/AsyncOperationCompletedEvent.cs  |   3 +-
 .../Debugger/AsyncOperationStartedEvent.cs    |   3 +-
 .../Debugger/BreakpointResolvedEvent.cs       |  21 +
 .../{ => Chrome}/Debugger/CallFrame.cs        |   3 +-
 .../Debugger/CanSetScriptSourceCommand.cs     |   3 +-
 .../CanSetScriptSourceCommandResponse.cs      |   3 +-
 .../{ => Chrome}/Debugger/CollectionEntry.cs  |   3 +-
 .../Debugger/CompileScriptCommand.cs          |   3 +-
 .../Debugger/CompileScriptCommandResponse.cs  |   3 +-
 .../Debugger/ContinueToLocationCommand.cs     |   3 +-
 .../ContinueToLocationCommandResponse.cs      |  15 +
 .../Chrome/Debugger/DisableCommand.cs         |  15 +
 .../Chrome/Debugger/DisableCommandResponse.cs |  15 +
 .../Debugger/DisablePromiseTrackerCommand.cs  |   3 +-
 .../DisablePromiseTrackerCommandResponse.cs   |   3 +-
 .../Protocol/Chrome/Debugger/EnableCommand.cs |  15 +
 .../Chrome/Debugger/EnableCommandResponse.cs  |  15 +
 .../Debugger/EnablePromiseTrackerCommand.cs   |   3 +-
 .../EnablePromiseTrackerCommandResponse.cs    |   3 +-
 .../Debugger/EvaluateOnCallFrameCommand.cs    |   3 +-
 .../EvaluateOnCallFrameCommandResponse.cs     |   3 +-
 .../{ => Chrome}/Debugger/ExceptionDetails.cs |   3 +-
 .../FlushAsyncOperationEventsCommand.cs       |   3 +-
 ...lushAsyncOperationEventsCommandResponse.cs |   3 +-
 .../{ => Chrome}/Debugger/FunctionDetails.cs  |   3 +-
 .../Debugger/GeneratorObjectDetails.cs        |   3 +-
 .../Debugger/GetBacktraceCommand.cs           |   3 +-
 .../Debugger/GetBacktraceCommandResponse.cs   |   3 +-
 .../Debugger/GetCollectionEntriesCommand.cs   |   3 +-
 .../GetCollectionEntriesCommandResponse.cs    |   3 +-
 .../Debugger/GetFunctionDetailsCommand.cs     |   3 +-
 .../GetFunctionDetailsCommandResponse.cs      |  19 +
 .../GetGeneratorObjectDetailsCommand.cs       |   3 +-
 ...etGeneratorObjectDetailsCommandResponse.cs |   3 +-
 .../Debugger/GetPromiseByIdCommand.cs         |   3 +-
 .../Debugger/GetPromiseByIdCommandResponse.cs |   3 +-
 .../Debugger/GetPromisesCommand.cs            |   3 +-
 .../Debugger/GetPromisesCommandResponse.cs    |   3 +-
 .../Chrome/Debugger/GetScriptSourceCommand.cs |  19 +
 .../GetScriptSourceCommandResponse.cs         |  19 +
 .../Debugger/GetStepInPositionsCommand.cs     |   3 +-
 .../GetStepInPositionsCommandResponse.cs      |   3 +-
 .../Debugger/GlobalObjectClearedEvent.cs      |  13 +
 .../{ => Chrome}/Debugger/Location.cs         |   3 +-
 .../Protocol/Chrome/Debugger/PauseCommand.cs  |  15 +
 .../Chrome/Debugger/PauseCommandResponse.cs   |  15 +
 .../{ => Chrome}/Debugger/PausedEvent.cs      |   3 +-
 .../{ => Chrome}/Debugger/PromiseDetails.cs   |   3 +-
 .../Debugger/PromiseUpdatedEvent.cs           |   3 +-
 .../RemoveAsyncOperationBreakpointCommand.cs  |   3 +-
 ...AsyncOperationBreakpointCommandResponse.cs |   3 +-
 .../Debugger/RemoveBreakpointCommand.cs       |  19 +
 .../RemoveBreakpointCommandResponse.cs        |  15 +
 .../Debugger/RestartFrameCommand.cs           |   3 +-
 .../Debugger/RestartFrameCommandResponse.cs   |   3 +-
 .../Protocol/Chrome/Debugger/ResumeCommand.cs |  15 +
 .../Chrome/Debugger/ResumeCommandResponse.cs  |  15 +
 .../Protocol/Chrome/Debugger/ResumedEvent.cs  |  13 +
 .../{ => Chrome}/Debugger/RunScriptCommand.cs |   3 +-
 .../Debugger/RunScriptCommandResponse.cs      |   3 +-
 .../Protocol/Chrome/Debugger/Scope.cs         |  22 +
 .../Debugger/ScriptFailedToParseEvent.cs      |   3 +-
 .../Debugger/ScriptParsedEvent.cs             |   3 +-
 .../Chrome/Debugger/SearchInContentCommand.cs |  31 +
 .../SearchInContentCommandResponse.cs         |   3 +-
 .../{ => Chrome}/Debugger/SearchMatch.cs      |   3 +-
 .../Debugger/SetAsyncCallStackDepthCommand.cs |   3 +-
 .../SetAsyncCallStackDepthCommandResponse.cs  |   3 +-
 .../SetAsyncOperationBreakpointCommand.cs     |   3 +-
 ...AsyncOperationBreakpointCommandResponse.cs |   3 +-
 .../Debugger/SetBreakpointByUrlCommand.cs     |   3 +-
 .../SetBreakpointByUrlCommandResponse.cs      |  23 +
 .../Debugger/SetBreakpointCommand.cs          |   3 +-
 .../Debugger/SetBreakpointCommandResponse.cs  |  23 +
 .../Debugger/SetBreakpointsActiveCommand.cs   |  19 +
 .../SetBreakpointsActiveCommandResponse.cs    |  15 +
 .../Debugger/SetPauseOnExceptionsCommand.cs   |  19 +
 .../SetPauseOnExceptionsCommandResponse.cs    |  15 +
 .../Debugger/SetScriptSourceCommand.cs        |   3 +-
 .../SetScriptSourceCommandResponse.cs         |   3 +-
 .../Debugger/SetScriptSourceError.cs          |   3 +-
 .../Debugger/SetSkipAllPausesCommand.cs       |   3 +-
 .../SetSkipAllPausesCommandResponse.cs        |   3 +-
 .../Debugger/SetVariableValueCommand.cs       |   3 +-
 .../SetVariableValueCommandResponse.cs        |   3 +-
 .../Debugger/SkipStackFramesCommand.cs        |   3 +-
 .../SkipStackFramesCommandResponse.cs         |   3 +-
 .../{ => Chrome}/Debugger/StackTrace.cs       |   3 +-
 .../Debugger/StepIntoAsyncCommand.cs          |   3 +-
 .../Debugger/StepIntoAsyncCommandResponse.cs  |   3 +-
 .../Chrome/Debugger/StepIntoCommand.cs        |  15 +
 .../Debugger/StepIntoCommandResponse.cs       |  15 +
 .../Chrome/Debugger/StepOutCommand.cs         |  15 +
 .../Chrome/Debugger/StepOutCommandResponse.cs |  15 +
 .../Chrome/Debugger/StepOverCommand.cs        |  15 +
 .../Debugger/StepOverCommandResponse.cs       |  15 +
 .../ClearDeviceOrientationOverrideCommand.cs  |   3 +-
 ...eviceOrientationOverrideCommandResponse.cs |   3 +-
 .../SetDeviceOrientationOverrideCommand.cs    |   3 +-
 ...eviceOrientationOverrideCommandResponse.cs |   3 +-
 .../Emulation/CanEmulateCommand.cs            |   3 +-
 .../Emulation/CanEmulateCommandResponse.cs    |   3 +-
 .../ClearDeviceMetricsOverrideCommand.cs      |   3 +-
 ...earDeviceMetricsOverrideCommandResponse.cs |   3 +-
 .../ClearGeolocationOverrideCommand.cs        |   3 +-
 ...ClearGeolocationOverrideCommandResponse.cs |   3 +-
 .../ResetScrollAndPageScaleFactorCommand.cs   |   3 +-
 ...ScrollAndPageScaleFactorCommandResponse.cs |   3 +-
 .../SetDeviceMetricsOverrideCommand.cs        |   3 +-
 ...SetDeviceMetricsOverrideCommandResponse.cs |   3 +-
 .../Emulation/SetEmulatedMediaCommand.cs      |   3 +-
 .../SetEmulatedMediaCommandResponse.cs        |   3 +-
 .../SetGeolocationOverrideCommand.cs          |   3 +-
 .../SetGeolocationOverrideCommandResponse.cs  |   3 +-
 .../Emulation/SetPageScaleFactorCommand.cs    |   3 +-
 .../SetPageScaleFactorCommandResponse.cs      |   3 +-
 .../SetScriptExecutionDisabledCommand.cs      |   3 +-
 ...tScriptExecutionDisabledCommandResponse.cs |   3 +-
 .../SetTouchEmulationEnabledCommand.cs        |   3 +-
 ...SetTouchEmulationEnabledCommandResponse.cs |   3 +-
 .../{ => Chrome}/Emulation/Viewport.cs        |   3 +-
 .../Emulation/ViewportChangedEvent.cs         |   3 +-
 .../FileSystem/DeleteEntryCommand.cs          |   3 +-
 .../FileSystem/DeleteEntryCommandResponse.cs  |   3 +-
 .../{ => Chrome}/FileSystem/DisableCommand.cs |   3 +-
 .../FileSystem/DisableCommandResponse.cs      |   3 +-
 .../{ => Chrome}/FileSystem/EnableCommand.cs  |   3 +-
 .../FileSystem/EnableCommandResponse.cs       |   3 +-
 .../Protocol/{ => Chrome}/FileSystem/Entry.cs |   3 +-
 .../{ => Chrome}/FileSystem/Metadata.cs       |   3 +-
 .../RequestDirectoryContentCommand.cs         |   3 +-
 .../RequestDirectoryContentCommandResponse.cs |   3 +-
 .../FileSystem/RequestFileContentCommand.cs   |   3 +-
 .../RequestFileContentCommandResponse.cs      |   3 +-
 .../RequestFileSystemRootCommand.cs           |   3 +-
 .../RequestFileSystemRootCommandResponse.cs   |   3 +-
 .../FileSystem/RequestMetadataCommand.cs      |   3 +-
 .../RequestMetadataCommandResponse.cs         |   3 +-
 .../HeapProfiler/AddHeapSnapshotChunkEvent.cs |   3 +-
 .../AddInspectedHeapObjectCommand.cs          |   3 +-
 .../AddInspectedHeapObjectCommandResponse.cs  |   3 +-
 .../HeapProfiler/CollectGarbageCommand.cs     |   3 +-
 .../CollectGarbageCommandResponse.cs          |   3 +-
 .../HeapProfiler/DisableCommand.cs            |   3 +-
 .../HeapProfiler/DisableCommandResponse.cs    |   3 +-
 .../HeapProfiler/EnableCommand.cs             |   3 +-
 .../HeapProfiler/EnableCommandResponse.cs     |   3 +-
 .../HeapProfiler/GetHeapObjectIdCommand.cs    |   3 +-
 .../GetHeapObjectIdCommandResponse.cs         |   3 +-
 .../GetObjectByHeapObjectIdCommand.cs         |   3 +-
 .../GetObjectByHeapObjectIdCommandResponse.cs |   3 +-
 .../HeapProfiler/HeapStatsUpdateEvent.cs      |   3 +-
 .../HeapProfiler/LastSeenObjectIdEvent.cs     |   3 +-
 .../ReportHeapSnapshotProgressEvent.cs        |   3 +-
 .../HeapProfiler/ResetProfilesEvent.cs        |   3 +-
 .../StartTrackingHeapObjectsCommand.cs        |   3 +-
 ...StartTrackingHeapObjectsCommandResponse.cs |   3 +-
 .../StopTrackingHeapObjectsCommand.cs         |   3 +-
 .../StopTrackingHeapObjectsCommandResponse.cs |   3 +-
 .../HeapProfiler/TakeHeapSnapshotCommand.cs   |   3 +-
 .../TakeHeapSnapshotCommandResponse.cs        |   3 +-
 .../IndexedDB/ClearObjectStoreCommand.cs      |  27 +
 .../ClearObjectStoreCommandResponse.cs        |  15 +
 .../{ => Chrome}/IndexedDB/DataEntry.cs       |   3 +-
 .../IndexedDB/DatabaseWithObjectStores.cs     |   3 +-
 .../Chrome/IndexedDB/DisableCommand.cs        |  15 +
 .../IndexedDB/DisableCommandResponse.cs       |  15 +
 .../Chrome/IndexedDB/EnableCommand.cs         |  15 +
 .../Chrome/IndexedDB/EnableCommandResponse.cs |  15 +
 .../Protocol/Chrome/IndexedDB/Key.cs          |  34 +
 .../Protocol/Chrome/IndexedDB/KeyPath.cs      |  26 +
 .../Protocol/Chrome/IndexedDB/KeyRange.cs     |  30 +
 .../Protocol/Chrome/IndexedDB/ObjectStore.cs  |  30 +
 .../Chrome/IndexedDB/ObjectStoreIndex.cs      |  30 +
 .../Chrome/IndexedDB/RequestDataCommand.cs    |  43 +
 .../IndexedDB/RequestDataCommandResponse.cs   |  23 +
 .../IndexedDB/RequestDatabaseCommand.cs       |  23 +
 .../RequestDatabaseCommandResponse.cs         |  19 +
 .../IndexedDB/RequestDatabaseNamesCommand.cs  |  19 +
 .../RequestDatabaseNamesCommandResponse.cs    |  19 +
 .../Input/DispatchKeyEventCommand.cs          |   3 +-
 .../Input/DispatchKeyEventCommandResponse.cs  |   3 +-
 .../Input/DispatchMouseEventCommand.cs        |   3 +-
 .../DispatchMouseEventCommandResponse.cs      |   3 +-
 .../Input/DispatchTouchEventCommand.cs        |   3 +-
 .../DispatchTouchEventCommandResponse.cs      |   3 +-
 .../EmulateTouchFromMouseEventCommand.cs      |   3 +-
 ...ulateTouchFromMouseEventCommandResponse.cs |   3 +-
 .../{ => Chrome}/Input/GestureSourceType.cs   |   2 +-
 .../Input/SynthesizePinchGestureCommand.cs    |   5 +-
 .../SynthesizePinchGestureCommandResponse.cs  |   3 +-
 .../Input/SynthesizeScrollGestureCommand.cs   |   5 +-
 .../SynthesizeScrollGestureCommandResponse.cs |   3 +-
 .../Input/SynthesizeTapGestureCommand.cs      |   5 +-
 .../SynthesizeTapGestureCommandResponse.cs    |   3 +-
 .../Protocol/{ => Chrome}/Input/TouchPoint.cs |   3 +-
 .../Chrome/Inspector/DetachedEvent.cs         |  17 +
 .../Chrome/Inspector/DisableCommand.cs        |  15 +
 .../Inspector/DisableCommandResponse.cs       |  15 +
 .../Chrome/Inspector/EnableCommand.cs         |  15 +
 .../Chrome/Inspector/EnableCommandResponse.cs |  15 +
 .../EvaluateForTestInFrontendEvent.cs         |   3 +-
 .../Protocol/Chrome/Inspector/InspectEvent.cs |  18 +
 .../Chrome/Inspector/TargetCrashedEvent.cs    |  13 +
 .../LayerTree/CompositingReasonsCommand.cs    |   3 +-
 .../CompositingReasonsCommandResponse.cs      |   3 +-
 .../Chrome/LayerTree/DisableCommand.cs        |  15 +
 .../LayerTree/DisableCommandResponse.cs       |  15 +
 .../Chrome/LayerTree/EnableCommand.cs         |  15 +
 .../Chrome/LayerTree/EnableCommandResponse.cs |  15 +
 .../Protocol/{ => Chrome}/LayerTree/Layer.cs  |   3 +-
 .../LayerTree/LayerPaintedEvent.cs            |   3 +-
 .../LayerTree/LayerTreeDidChangeEvent.cs      |   3 +-
 .../LayerTree/LoadSnapshotCommand.cs          |   3 +-
 .../LayerTree/LoadSnapshotCommandResponse.cs  |   3 +-
 .../LayerTree/MakeSnapshotCommand.cs          |   3 +-
 .../LayerTree/MakeSnapshotCommandResponse.cs  |   3 +-
 .../{ => Chrome}/LayerTree/PictureTile.cs     |   3 +-
 .../LayerTree/ProfileSnapshotCommand.cs       |   3 +-
 .../ProfileSnapshotCommandResponse.cs         |   3 +-
 .../LayerTree/ReleaseSnapshotCommand.cs       |   3 +-
 .../ReleaseSnapshotCommandResponse.cs         |   3 +-
 .../LayerTree/ReplaySnapshotCommand.cs        |   3 +-
 .../ReplaySnapshotCommandResponse.cs          |   3 +-
 .../{ => Chrome}/LayerTree/ScrollRect.cs      |   3 +-
 .../LayerTree/SnapshotCommandLogCommand.cs    |   3 +-
 .../SnapshotCommandLogCommandResponse.cs      |   3 +-
 .../Memory/GetDOMCountersCommand.cs           |   3 +-
 .../Memory/GetDOMCountersCommandResponse.cs   |   3 +-
 .../{ => Chrome}/Network/CachedResource.cs    |   3 +-
 .../Network/CanClearBrowserCacheCommand.cs    |  15 +
 .../CanClearBrowserCacheCommandResponse.cs    |  19 +
 .../Network/CanClearBrowserCookiesCommand.cs  |  15 +
 .../CanClearBrowserCookiesCommandResponse.cs  |  19 +
 .../CanEmulateNetworkConditionsCommand.cs     |   3 +-
 ...EmulateNetworkConditionsCommandResponse.cs |   3 +-
 .../Network/ClearBrowserCacheCommand.cs       |  15 +
 .../ClearBrowserCacheCommandResponse.cs       |  15 +
 .../Network/ClearBrowserCookiesCommand.cs     |  15 +
 .../ClearBrowserCookiesCommandResponse.cs     |  15 +
 .../Protocol/Chrome/Network/Cookie.cs         |  50 ++
 .../Chrome/Network/DataReceivedEvent.cs       |  29 +
 .../Network/DeleteCookieCommand.cs            |   3 +-
 .../Network/DeleteCookieCommandResponse.cs    |   3 +-
 .../Protocol/Chrome/Network/DisableCommand.cs |  15 +
 .../Chrome/Network/DisableCommandResponse.cs  |  15 +
 .../EmulateNetworkConditionsCommand.cs        |   3 +-
 ...EmulateNetworkConditionsCommandResponse.cs |   3 +-
 .../Protocol/Chrome/Network/EnableCommand.cs  |  15 +
 .../Chrome/Network/EnableCommandResponse.cs   |  15 +
 .../EventSourceMessageReceivedEvent.cs        |   3 +-
 .../{ => Chrome}/Network/GetCookiesCommand.cs |   3 +-
 .../Network/GetCookiesCommandResponse.cs      |   3 +-
 .../Chrome/Network/GetResponseBodyCommand.cs  |  19 +
 .../Network/GetResponseBodyCommandResponse.cs |  23 +
 .../{ => Chrome}/Network/Initiator.cs         |   3 +-
 .../Network/LoadingFailedEvent.cs             |   3 +-
 .../Network/LoadingFinishedEvent.cs           |   3 +-
 .../{ => Chrome}/Network/ReplayXHRCommand.cs  |   3 +-
 .../Network/ReplayXHRCommandResponse.cs       |   3 +-
 .../Protocol/Chrome/Network/Request.cs        |  30 +
 .../Network/RequestServedFromCacheEvent.cs    |  17 +
 .../Network/RequestWillBeSentEvent.cs         |   3 +-
 .../{ => Chrome}/Network/ResourceTiming.cs    |   3 +-
 .../Protocol/{ => Chrome}/Network/Response.cs |   3 +-
 .../Chrome/Network/ResponseReceivedEvent.cs   |  37 +
 .../Chrome/Network/SetCacheDisabledCommand.cs |  19 +
 .../SetCacheDisabledCommandResponse.cs        |  15 +
 .../SetDataSizeLimitsForTestCommand.cs        |   3 +-
 ...SetDataSizeLimitsForTestCommandResponse.cs |   3 +-
 .../Network/SetExtraHTTPHeadersCommand.cs     |  19 +
 .../SetExtraHTTPHeadersCommandResponse.cs     |  15 +
 .../Network/SetMonitoringXHREnabledCommand.cs |   3 +-
 .../SetMonitoringXHREnabledCommandResponse.cs |   3 +-
 .../Network/SetUserAgentOverrideCommand.cs    |   3 +-
 .../SetUserAgentOverrideCommandResponse.cs    |   3 +-
 .../Chrome/Network/WebSocketClosedEvent.cs    |  21 +
 .../Chrome/Network/WebSocketCreatedEvent.cs   |  21 +
 .../{ => Chrome}/Network/WebSocketFrame.cs    |   3 +-
 .../Network/WebSocketFrameErrorEvent.cs       |  25 +
 .../Network/WebSocketFrameReceivedEvent.cs    |  25 +
 .../Chrome/Network/WebSocketFrameSentEvent.cs |  25 +
 ...WebSocketHandshakeResponseReceivedEvent.cs |  25 +
 .../{ => Chrome}/Network/WebSocketRequest.cs  |   3 +-
 .../{ => Chrome}/Network/WebSocketResponse.cs |   3 +-
 .../WebSocketWillSendHandshakeRequestEvent.cs |   3 +-
 .../Page/AddScriptToEvaluateOnLoadCommand.cs  |  16 +
 ...ddScriptToEvaluateOnLoadCommandResponse.cs |  16 +
 .../{ => Chrome}/Page/CanScreencastCommand.cs |   3 +-
 .../Page/CanScreencastCommandResponse.cs      |   3 +-
 .../Page/CaptureScreenshotCommand.cs          |   3 +-
 .../Page/CaptureScreenshotCommandResponse.cs  |   3 +-
 .../Page/ClearDeviceMetricsOverrideCommand.cs |   3 +-
 ...earDeviceMetricsOverrideCommandResponse.cs |   3 +-
 .../ClearDeviceOrientationOverrideCommand.cs  |   3 +-
 ...eviceOrientationOverrideCommandResponse.cs |   3 +-
 .../Page/ClearGeolocationOverrideCommand.cs   |   3 +-
 ...ClearGeolocationOverrideCommandResponse.cs |   3 +-
 .../{ => Chrome}/Page/ColorPickedEvent.cs     |   3 +-
 .../Chrome/Page/DeleteCookieCommand.cs        |  23 +
 .../Page/DeleteCookieCommandResponse.cs       |  15 +
 .../Protocol/Chrome/Page/DisableCommand.cs    |  15 +
 .../Chrome/Page/DisableCommandResponse.cs     |  15 +
 .../Chrome/Page/DomContentEventFiredEvent.cs  |  14 +
 .../Protocol/Chrome/Page/EnableCommand.cs     |  15 +
 .../Chrome/Page/EnableCommandResponse.cs      |  15 +
 .../Protocol/Chrome/Page/Frame.cs             |  42 +
 .../{ => Chrome}/Page/FrameAttachedEvent.cs   |   3 +-
 .../FrameClearedScheduledNavigationEvent.cs   |  17 +
 .../Chrome/Page/FrameDetachedEvent.cs         |  17 +
 .../Chrome/Page/FrameNavigatedEvent.cs        |  17 +
 .../{ => Chrome}/Page/FrameResizedEvent.cs    |   3 +-
 .../{ => Chrome}/Page/FrameResourceTree.cs    |   3 +-
 .../Page/FrameScheduledNavigationEvent.cs     |  21 +
 .../Chrome/Page/FrameStartedLoadingEvent.cs   |  17 +
 .../Chrome/Page/FrameStoppedLoadingEvent.cs   |  17 +
 .../Protocol/Chrome/Page/GetCookiesCommand.cs |  15 +
 .../Page/GetCookiesCommandResponse.cs         |   3 +-
 .../Page/GetNavigationHistoryCommand.cs       |   3 +-
 .../GetNavigationHistoryCommandResponse.cs    |   3 +-
 .../Chrome/Page/GetResourceContentCommand.cs  |  23 +
 .../Page/GetResourceContentCommandResponse.cs |  23 +
 .../Chrome/Page/GetResourceTreeCommand.cs     |  15 +
 .../Page/GetResourceTreeCommandResponse.cs    |  19 +
 .../Page/HandleJavaScriptDialogCommand.cs     |  23 +
 .../HandleJavaScriptDialogCommandResponse.cs  |  15 +
 .../Page/InterstitialHiddenEvent.cs           |   3 +-
 .../Page/InterstitialShownEvent.cs            |   3 +-
 .../Page/JavascriptDialogClosedEvent.cs       |  13 +
 .../Page/JavascriptDialogOpeningEvent.cs      |  17 +
 .../Chrome/Page/LoadEventFiredEvent.cs        |  14 +
 .../Protocol/Chrome/Page/NavigateCommand.cs   |  19 +
 .../Page/NavigateCommandResponse.cs           |   3 +-
 .../Page/NavigateToHistoryEntryCommand.cs     |   3 +-
 .../NavigateToHistoryEntryCommandResponse.cs  |   3 +-
 .../{ => Chrome}/Page/NavigationEntry.cs      |   3 +-
 .../Protocol/Chrome/Page/ReloadCommand.cs     |  23 +
 .../Chrome/Page/ReloadCommandResponse.cs      |  15 +
 .../RemoveScriptToEvaluateOnLoadCommand.cs    |  16 +
 ...veScriptToEvaluateOnLoadCommandResponse.cs |  12 +
 .../{ => Chrome}/Page/ResourceType.cs         |   2 +-
 .../Page/ScreencastFrameAckCommand.cs         |   3 +-
 .../Page/ScreencastFrameAckCommandResponse.cs |   3 +-
 .../{ => Chrome}/Page/ScreencastFrameEvent.cs |   3 +-
 .../Page/ScreencastFrameMetadata.cs           |   3 +-
 .../Page/ScreencastVisibilityChangedEvent.cs  |   3 +-
 .../Chrome/Page/SearchInResourceCommand.cs    |  35 +
 .../Page/SearchInResourceCommandResponse.cs   |   3 +-
 .../Page/SetColorPickerEnabledCommand.cs      |   3 +-
 .../SetColorPickerEnabledCommandResponse.cs   |   3 +-
 .../Page/SetDeviceMetricsOverrideCommand.cs   |   3 +-
 ...SetDeviceMetricsOverrideCommandResponse.cs |   3 +-
 .../SetDeviceOrientationOverrideCommand.cs    |   3 +-
 ...eviceOrientationOverrideCommandResponse.cs |   3 +-
 .../Chrome/Page/SetDocumentContentCommand.cs  |  23 +
 .../Page/SetDocumentContentCommandResponse.cs |  15 +
 .../Page/SetGeolocationOverrideCommand.cs     |   3 +-
 .../SetGeolocationOverrideCommandResponse.cs  |   3 +-
 .../Page/SetOverlayMessageCommand.cs          |   3 +-
 .../Page/SetOverlayMessageCommandResponse.cs  |   3 +-
 .../SetShowViewportSizeOnResizeCommand.cs     |   3 +-
 ...ShowViewportSizeOnResizeCommandResponse.cs |   3 +-
 .../Page/SetTouchEmulationEnabledCommand.cs   |   3 +-
 ...SetTouchEmulationEnabledCommandResponse.cs |  15 +
 .../Page/StartScreencastCommand.cs            |   3 +-
 .../Page/StartScreencastCommandResponse.cs    |   3 +-
 .../Page/StopScreencastCommand.cs             |   3 +-
 .../Page/StopScreencastCommandResponse.cs     |   3 +-
 .../Power/CanProfilePowerCommand.cs           |   3 +-
 .../Power/CanProfilePowerCommandResponse.cs   |   3 +-
 .../{ => Chrome}/Power/DataAvailableEvent.cs  |   3 +-
 .../Protocol/{ => Chrome}/Power/EndCommand.cs |   3 +-
 .../{ => Chrome}/Power/EndCommandResponse.cs  |   3 +-
 .../Power/GetAccuracyLevelCommand.cs          |   3 +-
 .../Power/GetAccuracyLevelCommandResponse.cs  |   3 +-
 .../Protocol/{ => Chrome}/Power/PowerEvent.cs |   3 +-
 .../{ => Chrome}/Power/StartCommand.cs        |   3 +-
 .../Power/StartCommandResponse.cs             |   3 +-
 .../{ => Chrome}/Profiler/CPUProfile.cs       |   3 +-
 .../{ => Chrome}/Profiler/CPUProfileNode.cs   |   3 +-
 .../Profiler/ConsoleProfileFinishedEvent.cs   |   3 +-
 .../Profiler/ConsoleProfileStartedEvent.cs    |   3 +-
 .../{ => Chrome}/Profiler/DisableCommand.cs   |   3 +-
 .../Profiler/DisableCommandResponse.cs        |   3 +-
 .../{ => Chrome}/Profiler/EnableCommand.cs    |   3 +-
 .../Profiler/EnableCommandResponse.cs         |   3 +-
 .../{ => Chrome}/Profiler/PositionTickInfo.cs |   3 +-
 .../Profiler/SetSamplingIntervalCommand.cs    |   3 +-
 .../SetSamplingIntervalCommandResponse.cs     |   3 +-
 .../{ => Chrome}/Profiler/StartCommand.cs     |   3 +-
 .../Profiler/StartCommandResponse.cs          |   3 +-
 .../{ => Chrome}/Profiler/StopCommand.cs      |   3 +-
 .../Profiler/StopCommandResponse.cs           |   3 +-
 .../Protocol/{ => Chrome}/ProtocolName.cs     |   2 +-
 .../SetContinuousPaintingEnabledCommand.cs    |   3 +-
 ...ontinuousPaintingEnabledCommandResponse.cs |   3 +-
 .../Rendering/SetShowDebugBordersCommand.cs   |   3 +-
 .../SetShowDebugBordersCommandResponse.cs     |   3 +-
 .../Rendering/SetShowFPSCounterCommand.cs     |   3 +-
 .../SetShowFPSCounterCommandResponse.cs       |   3 +-
 .../Rendering/SetShowPaintRectsCommand.cs     |   3 +-
 .../SetShowPaintRectsCommandResponse.cs       |   3 +-
 .../SetShowScrollBottleneckRectsCommand.cs    |   3 +-
 ...howScrollBottleneckRectsCommandResponse.cs |   3 +-
 .../{ => Chrome}/Runtime/CallArgument.cs      |   3 +-
 .../Chrome/Runtime/CallFunctionOnCommand.cs   |  39 +
 .../Runtime/CallFunctionOnCommandResponse.cs  |  23 +
 .../{ => Chrome}/Runtime/CustomPreview.cs     |   3 +-
 .../Protocol/Chrome/Runtime/DisableCommand.cs |  15 +
 .../Chrome/Runtime/DisableCommandResponse.cs  |  15 +
 .../Protocol/Chrome/Runtime/EnableCommand.cs  |  15 +
 .../Chrome/Runtime/EnableCommandResponse.cs   |  15 +
 .../{ => Chrome}/Runtime/EntryPreview.cs      |   3 +-
 .../{ => Chrome}/Runtime/EvaluateCommand.cs   |   3 +-
 .../Runtime/EvaluateCommandResponse.cs        |   3 +-
 .../{ => Chrome}/Runtime/EventListener.cs     |   3 +-
 .../Runtime/ExecutionContextCreatedEvent.cs   |  17 +
 .../Runtime/ExecutionContextDescription.cs    |   3 +-
 .../Runtime/ExecutionContextDestroyedEvent.cs |   3 +-
 .../Runtime/ExecutionContextsClearedEvent.cs  |   3 +-
 .../Runtime/GetEventListenersCommand.cs       |   3 +-
 .../GetEventListenersCommandResponse.cs       |   3 +-
 .../Runtime/GetPropertiesCommand.cs           |   3 +-
 .../Runtime/GetPropertiesCommandResponse.cs   |   3 +-
 .../Runtime/InternalPropertyDescriptor.cs     |  22 +
 .../Runtime/IsRunRequiredCommand.cs           |   3 +-
 .../Runtime/IsRunRequiredCommandResponse.cs   |   3 +-
 .../{ => Chrome}/Runtime/ObjectPreview.cs     |   3 +-
 .../Runtime/PropertyDescriptor.cs             |   3 +-
 .../{ => Chrome}/Runtime/PropertyPreview.cs   |   3 +-
 .../Chrome/Runtime/ReleaseObjectCommand.cs    |  19 +
 .../Runtime/ReleaseObjectCommandResponse.cs   |  15 +
 .../Runtime/ReleaseObjectGroupCommand.cs      |  19 +
 .../ReleaseObjectGroupCommandResponse.cs      |  15 +
 .../{ => Chrome}/Runtime/RemoteObject.cs      |   3 +-
 .../Protocol/Chrome/Runtime/RunCommand.cs     |  15 +
 .../Chrome/Runtime/RunCommandResponse.cs      |  15 +
 .../SetCustomObjectFormatterEnabledCommand.cs |   3 +-
 ...omObjectFormatterEnabledCommandResponse.cs |   3 +-
 .../ServiceWorker/DebugOnStartUpdatedEvent.cs |   3 +-
 .../DeliverPushMessageCommand.cs              |   3 +-
 .../DeliverPushMessageCommandResponse.cs      |   3 +-
 .../ServiceWorker/DisableCommand.cs           |   3 +-
 .../ServiceWorker/DisableCommandResponse.cs   |   3 +-
 .../ServiceWorker/DispatchMessageEvent.cs     |   3 +-
 .../ServiceWorker/EnableCommand.cs            |   3 +-
 .../ServiceWorker/EnableCommandResponse.cs    |   3 +-
 .../ServiceWorker/InspectWorkerCommand.cs     |   3 +-
 .../InspectWorkerCommandResponse.cs           |   3 +-
 .../ServiceWorker/SendMessageCommand.cs       |   3 +-
 .../SendMessageCommandResponse.cs             |   3 +-
 .../ServiceWorkerErrorMessage.cs              |   3 +-
 .../ServiceWorkerRegistration.cs              |   3 +-
 .../ServiceWorker/ServiceWorkerVersion.cs     |   3 +-
 .../ServiceWorkerVersionRunningStatus.cs      |   2 +-
 .../ServiceWorkerVersionStatus.cs             |   2 +-
 .../ServiceWorker/SetDebugOnStartCommand.cs   |   3 +-
 .../SetDebugOnStartCommandResponse.cs         |   3 +-
 .../ServiceWorker/StartWorkerCommand.cs       |   3 +-
 .../StartWorkerCommandResponse.cs             |   3 +-
 .../{ => Chrome}/ServiceWorker/StopCommand.cs |   3 +-
 .../ServiceWorker/StopCommandResponse.cs      |   3 +-
 .../ServiceWorker/StopWorkerCommand.cs        |   3 +-
 .../StopWorkerCommandResponse.cs              |   3 +-
 .../ServiceWorker/UnregisterCommand.cs        |   3 +-
 .../UnregisterCommandResponse.cs              |   3 +-
 .../UpdateRegistrationCommand.cs              |   3 +-
 .../UpdateRegistrationCommandResponse.cs      |   3 +-
 .../ServiceWorker/WorkerCreatedEvent.cs       |   3 +-
 .../ServiceWorker/WorkerErrorReportedEvent.cs |   3 +-
 .../WorkerRegistrationUpdatedEvent.cs         |   3 +-
 .../ServiceWorker/WorkerTerminatedEvent.cs    |   3 +-
 .../WorkerVersionUpdatedEvent.cs              |   3 +-
 .../{ => Chrome}/Timeline/DisableCommand.cs   |   3 +-
 .../Timeline/DisableCommandResponse.cs        |   3 +-
 .../{ => Chrome}/Timeline/EnableCommand.cs    |   3 +-
 .../Timeline/EnableCommandResponse.cs         |   3 +-
 .../Timeline/EventRecordedEvent.cs            |   3 +-
 .../{ => Chrome}/Timeline/StartCommand.cs     |   3 +-
 .../Timeline/StartCommandResponse.cs          |   3 +-
 .../{ => Chrome}/Timeline/StopCommand.cs      |   3 +-
 .../Timeline/StopCommandResponse.cs           |   3 +-
 .../{ => Chrome}/Timeline/TimelineEvent.cs    |   3 +-
 .../{ => Chrome}/Tracing/BufferUsageEvent.cs  |   3 +-
 .../Tracing/DataCollectedEvent.cs             |   3 +-
 .../{ => Chrome}/Tracing/EndCommand.cs        |   3 +-
 .../Tracing/EndCommandResponse.cs             |   3 +-
 .../Tracing/GetCategoriesCommand.cs           |   3 +-
 .../Tracing/GetCategoriesCommandResponse.cs   |   3 +-
 .../{ => Chrome}/Tracing/StartCommand.cs      |   3 +-
 .../Tracing/StartCommandResponse.cs           |   3 +-
 .../Tracing/TracingCompleteEvent.cs           |   3 +-
 .../Worker/ConnectToWorkerCommand.cs          |   3 +-
 .../Worker/ConnectToWorkerCommandResponse.cs  |  12 +
 .../Protocol/Chrome/Worker/DisableCommand.cs  |  12 +
 .../Chrome/Worker/DisableCommandResponse.cs   |  12 +
 .../Worker/DisconnectFromWorkerCommand.cs     |   3 +-
 .../DisconnectFromWorkerCommandResponse.cs    |  12 +
 .../Worker/DispatchMessageFromWorkerEvent.cs  |   3 +-
 .../Protocol/Chrome/Worker/EnableCommand.cs   |  12 +
 .../Chrome/Worker/EnableCommandResponse.cs    |  12 +
 .../Worker/SendMessageToWorkerCommand.cs      |   3 +-
 .../SendMessageToWorkerCommandResponse.cs     |  12 +
 .../Worker/SetAutoconnectToWorkersCommand.cs  |  16 +
 .../SetAutoconnectToWorkersCommandResponse.cs |  12 +
 .../{ => Chrome}/Worker/WorkerCreatedEvent.cs |   3 +-
 .../Worker/WorkerTerminatedEvent.cs           |   3 +-
 .../ApplicationCache/ApplicationCache.cs      |   3 +-
 .../ApplicationCacheResource.cs               |   3 +-
 .../ApplicationCacheStatusUpdatedEvent.cs     |   3 +-
 .../ApplicationCache/EnableCommand.cs         |   3 +-
 .../ApplicationCache/EnableCommandResponse.cs |   3 +-
 .../ApplicationCache/FrameWithManifest.cs     |   3 +-
 .../GetApplicationCacheForFrameCommand.cs     |   3 +-
 ...ApplicationCacheForFrameCommandResponse.cs |   3 +-
 .../GetFramesWithManifestsCommand.cs          |   3 +-
 .../GetFramesWithManifestsCommandResponse.cs  |   3 +-
 .../GetManifestForFrameCommand.cs             |   3 +-
 .../GetManifestForFrameCommandResponse.cs     |   3 +-
 .../NetworkStateUpdatedEvent.cs               |   3 +-
 .../Protocol/iOS/CSS/AddRuleCommand.cs        |  23 +
 .../iOS/CSS/AddRuleCommandResponse.cs         |  19 +
 .../{ => iOS}/CSS/CSSComputedStyleProperty.cs |   3 +-
 .../Protocol/iOS/CSS/CSSMedia.cs              |  30 +
 .../Protocol/iOS/CSS/CSSProperty.cs           |  46 +
 .../Protocol/iOS/CSS/CSSPropertyInfo.cs       |  26 +
 .../Protocol/iOS/CSS/CSSPropertyStatus.cs     |  14 +
 .../Protocol/iOS/CSS/CSSRule.cs               |  42 +
 .../Protocol/iOS/CSS/CSSRuleId.cs             |  22 +
 .../Protocol/iOS/CSS/CSSSelector.cs           |  26 +
 .../Protocol/iOS/CSS/CSSStyle.cs              |  42 +
 .../Protocol/iOS/CSS/CSSStyleAttribute.cs     |  22 +
 .../Protocol/iOS/CSS/CSSStyleId.cs            |  22 +
 .../Protocol/iOS/CSS/CSSStyleSheetBody.cs     |  26 +
 .../Protocol/iOS/CSS/CSSStyleSheetHeader.cs   |  50 ++
 .../iOS/CSS/CreateStyleSheetCommand.cs        |  19 +
 .../CSS/CreateStyleSheetCommandResponse.cs    |  19 +
 .../Protocol/{ => iOS}/CSS/DisableCommand.cs  |   3 +-
 .../{ => iOS}/CSS/DisableCommandResponse.cs   |   3 +-
 .../Protocol/{ => iOS}/CSS/EnableCommand.cs   |   3 +-
 .../{ => iOS}/CSS/EnableCommandResponse.cs    |   3 +-
 .../{ => iOS}/CSS/ForcePseudoStateCommand.cs  |   3 +-
 .../CSS/ForcePseudoStateCommandResponse.cs    |   3 +-
 .../iOS/CSS/GetAllStyleSheetsCommand.cs       |  15 +
 .../CSS/GetAllStyleSheetsCommandResponse.cs   |  19 +
 .../CSS/GetComputedStyleForNodeCommand.cs     |   3 +-
 .../GetComputedStyleForNodeCommandResponse.cs |   3 +-
 .../CSS/GetInlineStylesForNodeCommand.cs      |   3 +-
 .../GetInlineStylesForNodeCommandResponse.cs  |   3 +-
 .../iOS/CSS/GetMatchedStylesForNodeCommand.cs |  27 +
 .../GetMatchedStylesForNodeCommandResponse.cs |   3 +-
 .../iOS/CSS/GetNamedFlowCollectionCommand.cs  |  19 +
 .../GetNamedFlowCollectionCommandResponse.cs  |  19 +
 .../Protocol/iOS/CSS/GetStyleSheetCommand.cs  |  19 +
 .../iOS/CSS/GetStyleSheetCommandResponse.cs   |  19 +
 .../{ => iOS}/CSS/GetStyleSheetTextCommand.cs |   3 +-
 .../CSS/GetStyleSheetTextCommandResponse.cs   |   3 +-
 .../CSS/GetSupportedCSSPropertiesCommand.cs   |  15 +
 ...etSupportedCSSPropertiesCommandResponse.cs |  19 +
 ...etSupportedSystemFontFamilyNamesCommand.cs |  15 +
 ...tedSystemFontFamilyNamesCommandResponse.cs |  19 +
 .../Protocol/iOS/CSS/InheritedStyleEntry.cs   |  22 +
 .../CSS/MediaQueryResultChangedEvent.cs       |   3 +-
 .../Protocol/iOS/CSS/NamedFlow.cs             |  34 +
 .../Protocol/iOS/CSS/NamedFlowCreatedEvent.cs |  17 +
 .../Protocol/iOS/CSS/NamedFlowRemovedEvent.cs |  21 +
 .../Protocol/iOS/CSS/PseudoIdMatches.cs       |  22 +
 .../ChromeDevTools/Protocol/iOS/CSS/Region.cs |  22 +
 .../iOS/CSS/RegionOversetChangedEvent.cs      |  17 +
 .../RegisteredNamedFlowContentElementEvent.cs |  29 +
 .../Protocol/{ => iOS}/CSS/RuleMatch.cs       |   3 +-
 .../Protocol/iOS/CSS/SelectorList.cs          |  26 +
 .../iOS/CSS/SetRuleSelectorCommand.cs         |  23 +
 .../CSS/SetRuleSelectorCommandResponse.cs     |   3 +-
 .../iOS/CSS/SetStyleSheetTextCommand.cs       |  23 +
 .../CSS/SetStyleSheetTextCommandResponse.cs   |  15 +
 .../Protocol/iOS/CSS/SetStyleTextCommand.cs   |  23 +
 .../iOS/CSS/SetStyleTextCommandResponse.cs    |  19 +
 .../Protocol/{ => iOS}/CSS/ShorthandEntry.cs  |   3 +-
 .../Protocol/iOS/CSS/SourceRange.cs           |  30 +
 .../{ => iOS}/CSS/StyleSheetAddedEvent.cs     |   3 +-
 .../{ => iOS}/CSS/StyleSheetChangedEvent.cs   |   3 +-
 .../Protocol/iOS/CSS/StyleSheetOrigin.cs      |  14 +
 .../{ => iOS}/CSS/StyleSheetRemovedEvent.cs   |   3 +-
 ...nregisteredNamedFlowContentElementEvent.cs |  25 +
 .../iOS/Console/AddInspectedNodeCommand.cs    |  19 +
 .../AddInspectedNodeCommandResponse.cs        |  15 +
 .../Protocol/iOS/Console/CallFrame.cs         |  30 +
 .../{ => iOS}/Console/ClearMessagesCommand.cs |   3 +-
 .../Console/ClearMessagesCommandResponse.cs   |   3 +-
 .../Protocol/iOS/Console/ConsoleMessage.cs    |  58 ++
 .../{ => iOS}/Console/DisableCommand.cs       |   3 +-
 .../Console/DisableCommandResponse.cs         |   3 +-
 .../{ => iOS}/Console/EnableCommand.cs        |   3 +-
 .../Console/EnableCommandResponse.cs          |   3 +-
 .../{ => iOS}/Console/MessageAddedEvent.cs    |   3 +-
 .../Console/MessageRepeatCountUpdatedEvent.cs |  17 +
 .../{ => iOS}/Console/MessagesClearedEvent.cs |   3 +-
 .../Console/SetMonitoringXHREnabledCommand.cs |  19 +
 .../SetMonitoringXHREnabledCommandResponse.cs |  15 +
 .../iOS/DOM/AccessibilityProperties.cs        | 126 +++
 .../{ => iOS}/DOM/AttributeModifiedEvent.cs   |   3 +-
 .../{ => iOS}/DOM/AttributeRemovedEvent.cs    |   3 +-
 .../DOM/CharacterDataModifiedEvent.cs         |   3 +-
 .../DOM/ChildNodeCountUpdatedEvent.cs         |   3 +-
 .../{ => iOS}/DOM/ChildNodeInsertedEvent.cs   |   3 +-
 .../{ => iOS}/DOM/ChildNodeRemovedEvent.cs    |   3 +-
 .../DOM/DiscardSearchResultsCommand.cs        |   3 +-
 .../DiscardSearchResultsCommandResponse.cs    |   3 +-
 .../{ => iOS}/DOM/DocumentUpdatedEvent.cs     |   3 +-
 .../Protocol/iOS/DOM/EventListener.cs         |  46 +
 .../Protocol/{ => iOS}/DOM/FocusCommand.cs    |   3 +-
 .../{ => iOS}/DOM/FocusCommandResponse.cs     |   3 +-
 ...etAccessibilityPropertiesForNodeCommand.cs |  19 +
 ...ibilityPropertiesForNodeCommandResponse.cs |  19 +
 .../{ => iOS}/DOM/GetAttributesCommand.cs     |   3 +-
 .../DOM/GetAttributesCommandResponse.cs       |   3 +-
 .../{ => iOS}/DOM/GetDocumentCommand.cs       |   3 +-
 .../DOM/GetDocumentCommandResponse.cs         |   3 +-
 .../DOM/GetEventListenersForNodeCommand.cs    |   3 +-
 ...GetEventListenersForNodeCommandResponse.cs |   3 +-
 .../{ => iOS}/DOM/GetOuterHTMLCommand.cs      |   3 +-
 .../DOM/GetOuterHTMLCommandResponse.cs        |   3 +-
 .../{ => iOS}/DOM/GetSearchResultsCommand.cs  |   3 +-
 .../DOM/GetSearchResultsCommandResponse.cs    |   3 +-
 .../{ => iOS}/DOM/HideHighlightCommand.cs     |   3 +-
 .../DOM/HideHighlightCommandResponse.cs       |   3 +-
 .../Protocol/iOS/DOM/HighlightConfig.cs       |  34 +
 .../Protocol/iOS/DOM/HighlightFrameCommand.cs |  27 +
 .../DOM/HighlightFrameCommandResponse.cs      |   3 +-
 .../Protocol/iOS/DOM/HighlightNodeCommand.cs  |  27 +
 .../DOM/HighlightNodeCommandResponse.cs       |   3 +-
 .../Protocol/iOS/DOM/HighlightQuadCommand.cs  |  31 +
 .../DOM/HighlightQuadCommandResponse.cs       |   3 +-
 .../Protocol/iOS/DOM/HighlightRectCommand.cs  |  43 +
 .../DOM/HighlightRectCommandResponse.cs       |   3 +-
 .../iOS/DOM/HighlightSelectorCommand.cs       |  27 +
 .../DOM/HighlightSelectorCommandResponse.cs   |  15 +
 .../DOM/InlineStyleInvalidatedEvent.cs        |   3 +-
 .../Protocol/iOS/DOM/LiveRegionRelevant.cs    |  13 +
 .../{ => iOS}/DOM/MarkUndoableStateCommand.cs |   3 +-
 .../DOM/MarkUndoableStateCommandResponse.cs   |   3 +-
 .../Protocol/iOS/DOM/MoveToCommand.cs         |  27 +
 .../{ => iOS}/DOM/MoveToCommandResponse.cs    |   3 +-
 .../ChromeDevTools/Protocol/iOS/DOM/Node.cs   | 106 +++
 .../Protocol/iOS/DOM/PerformSearchCommand.cs  |  23 +
 .../DOM/PerformSearchCommandResponse.cs       |   3 +-
 .../{ => iOS}/DOM/PseudoElementAddedEvent.cs  |   3 +-
 .../DOM/PseudoElementRemovedEvent.cs          |   3 +-
 .../Protocol/iOS/DOM/PseudoType.cs            |  12 +
 .../PushNodeByBackendIdToFrontendCommand.cs   |  19 +
 ...odeByBackendIdToFrontendCommandResponse.cs |  19 +
 .../DOM/PushNodeByPathToFrontendCommand.cs    |   3 +-
 ...PushNodeByPathToFrontendCommandResponse.cs |   3 +-
 .../{ => iOS}/DOM/QuerySelectorAllCommand.cs  |   3 +-
 .../DOM/QuerySelectorAllCommandResponse.cs    |   3 +-
 .../{ => iOS}/DOM/QuerySelectorCommand.cs     |   3 +-
 .../DOM/QuerySelectorCommandResponse.cs       |   3 +-
 .../Protocol/iOS/DOM/RGBAColor.cs             |  30 +
 .../Protocol/{ => iOS}/DOM/RedoCommand.cs     |   3 +-
 .../{ => iOS}/DOM/RedoCommandResponse.cs      |   3 +-
 .../iOS/DOM/ReleaseBackendNodeIdsCommand.cs   |  19 +
 .../ReleaseBackendNodeIdsCommandResponse.cs   |  15 +
 .../{ => iOS}/DOM/RemoveAttributeCommand.cs   |   3 +-
 .../DOM/RemoveAttributeCommandResponse.cs     |   3 +-
 .../{ => iOS}/DOM/RemoveNodeCommand.cs        |   3 +-
 .../DOM/RemoveNodeCommandResponse.cs          |   3 +-
 .../{ => iOS}/DOM/RequestChildNodesCommand.cs |   3 +-
 .../DOM/RequestChildNodesCommandResponse.cs   |   3 +-
 .../{ => iOS}/DOM/RequestNodeCommand.cs       |   3 +-
 .../DOM/RequestNodeCommandResponse.cs         |   3 +-
 .../{ => iOS}/DOM/ResolveNodeCommand.cs       |   3 +-
 .../DOM/ResolveNodeCommandResponse.cs         |   3 +-
 .../{ => iOS}/DOM/SetAttributeValueCommand.cs |   3 +-
 .../DOM/SetAttributeValueCommandResponse.cs   |   3 +-
 .../DOM/SetAttributesAsTextCommand.cs         |   3 +-
 .../DOM/SetAttributesAsTextCommandResponse.cs |   3 +-
 .../{ => iOS}/DOM/SetChildNodesEvent.cs       |   3 +-
 .../iOS/DOM/SetInspectModeEnabledCommand.cs   |  23 +
 .../SetInspectModeEnabledCommandResponse.cs   |  15 +
 .../{ => iOS}/DOM/SetNodeNameCommand.cs       |   3 +-
 .../DOM/SetNodeNameCommandResponse.cs         |   3 +-
 .../{ => iOS}/DOM/SetNodeValueCommand.cs      |   3 +-
 .../DOM/SetNodeValueCommandResponse.cs        |   3 +-
 .../{ => iOS}/DOM/SetOuterHTMLCommand.cs      |   3 +-
 .../DOM/SetOuterHTMLCommandResponse.cs        |   3 +-
 .../{ => iOS}/DOM/ShadowRootPoppedEvent.cs    |   3 +-
 .../{ => iOS}/DOM/ShadowRootPushedEvent.cs    |   3 +-
 .../Protocol/{ => iOS}/DOM/UndoCommand.cs     |   3 +-
 .../{ => iOS}/DOM/UndoCommandResponse.cs      |   3 +-
 .../DOMDebugger/DOMBreakpointType.cs          |   2 +-
 .../DOMDebugger/RemoveDOMBreakpointCommand.cs |   5 +-
 .../RemoveDOMBreakpointCommandResponse.cs     |   3 +-
 .../RemoveEventListenerBreakpointCommand.cs   |  19 +
 ...eEventListenerBreakpointCommandResponse.cs |   3 +-
 .../RemoveInstrumentationBreakpointCommand.cs |  19 +
 ...nstrumentationBreakpointCommandResponse.cs |  15 +
 .../DOMDebugger/RemoveXHRBreakpointCommand.cs |   3 +-
 .../RemoveXHRBreakpointCommandResponse.cs     |   3 +-
 .../DOMDebugger/SetDOMBreakpointCommand.cs    |   5 +-
 .../SetDOMBreakpointCommandResponse.cs        |   3 +-
 .../SetEventListenerBreakpointCommand.cs      |  19 +
 ...tEventListenerBreakpointCommandResponse.cs |   3 +-
 .../SetInstrumentationBreakpointCommand.cs    |   3 +-
 ...nstrumentationBreakpointCommandResponse.cs |   3 +-
 .../DOMDebugger/SetXHRBreakpointCommand.cs    |   3 +-
 .../SetXHRBreakpointCommandResponse.cs        |   3 +-
 .../{ => iOS}/DOMStorage/DisableCommand.cs    |   3 +-
 .../DOMStorage/DisableCommandResponse.cs      |   3 +-
 .../DOMStorage/DomStorageItemAddedEvent.cs    |   3 +-
 .../DOMStorage/DomStorageItemRemovedEvent.cs  |   3 +-
 .../DOMStorage/DomStorageItemUpdatedEvent.cs  |   3 +-
 .../DOMStorage/DomStorageItemsClearedEvent.cs |   3 +-
 .../{ => iOS}/DOMStorage/EnableCommand.cs     |   3 +-
 .../DOMStorage/EnableCommandResponse.cs       |   3 +-
 .../DOMStorage/GetDOMStorageItemsCommand.cs   |   3 +-
 .../GetDOMStorageItemsCommandResponse.cs      |   3 +-
 .../DOMStorage/RemoveDOMStorageItemCommand.cs |   3 +-
 .../RemoveDOMStorageItemCommandResponse.cs    |   3 +-
 .../DOMStorage/SetDOMStorageItemCommand.cs    |   3 +-
 .../SetDOMStorageItemCommandResponse.cs       |   3 +-
 .../{ => iOS}/DOMStorage/StorageId.cs         |   3 +-
 .../{ => iOS}/Database/AddDatabaseEvent.cs    |   3 +-
 .../Protocol/{ => iOS}/Database/Database.cs   |   3 +-
 .../{ => iOS}/Database/DisableCommand.cs      |   3 +-
 .../Database/DisableCommandResponse.cs        |   3 +-
 .../{ => iOS}/Database/EnableCommand.cs       |   3 +-
 .../Database/EnableCommandResponse.cs         |   3 +-
 .../Protocol/{ => iOS}/Database/Error.cs      |   3 +-
 .../{ => iOS}/Database/ExecuteSQLCommand.cs   |   3 +-
 .../Database/ExecuteSQLCommandResponse.cs     |   3 +-
 .../Database/GetDatabaseTableNamesCommand.cs  |   3 +-
 .../GetDatabaseTableNamesCommandResponse.cs   |   3 +-
 .../iOS/Debugger/AssertPauseReason.cs         |  18 +
 .../Protocol/iOS/Debugger/BreakpointAction.cs |  26 +
 .../iOS/Debugger/BreakpointOptions.cs         |  30 +
 .../iOS/Debugger/BreakpointPauseReason.cs     |  18 +
 .../Debugger/BreakpointResolvedEvent.cs       |   3 +-
 .../iOS/Debugger/CSPViolationPauseReason.cs   |  18 +
 .../Protocol/iOS/Debugger/CallFrame.cs        |  34 +
 .../iOS/Debugger/ContinueToLocationCommand.cs |  19 +
 .../ContinueToLocationCommandResponse.cs      |   3 +-
 .../iOS/Debugger/DidSampleProbeEvent.cs       |  17 +
 .../{ => iOS}/Debugger/DisableCommand.cs      |   3 +-
 .../Debugger/DisableCommandResponse.cs        |   3 +-
 .../{ => iOS}/Debugger/EnableCommand.cs       |   3 +-
 .../Debugger/EnableCommandResponse.cs         |   3 +-
 .../Debugger/EvaluateOnCallFrameCommand.cs    |  47 +
 .../EvaluateOnCallFrameCommandResponse.cs     |  27 +
 .../Protocol/iOS/Debugger/FunctionDetails.cs  |  34 +
 .../iOS/Debugger/GetFunctionDetailsCommand.cs |  19 +
 .../GetFunctionDetailsCommandResponse.cs      |   3 +-
 .../Debugger/GetScriptSourceCommand.cs        |   3 +-
 .../GetScriptSourceCommandResponse.cs         |   3 +-
 .../Debugger/GlobalObjectClearedEvent.cs      |   3 +-
 .../Protocol/iOS/Debugger/Location.cs         |  26 +
 .../{ => iOS}/Debugger/PauseCommand.cs        |   3 +-
 .../Debugger/PauseCommandResponse.cs          |   3 +-
 .../Protocol/iOS/Debugger/PausedEvent.cs      |  25 +
 .../PlayBreakpointActionSoundEvent.cs         |  17 +
 .../Protocol/iOS/Debugger/ProbeSample.cs      |  34 +
 .../Debugger/RemoveBreakpointCommand.cs       |   3 +-
 .../RemoveBreakpointCommandResponse.cs        |   3 +-
 .../{ => iOS}/Debugger/ResumeCommand.cs       |   3 +-
 .../Debugger/ResumeCommandResponse.cs         |   3 +-
 .../{ => iOS}/Debugger/ResumedEvent.cs        |   3 +-
 .../Protocol/{ => iOS}/Debugger/Scope.cs      |   3 +-
 .../iOS/Debugger/ScriptFailedToParseEvent.cs  |  33 +
 .../iOS/Debugger/ScriptParsedEvent.cs         |  49 ++
 .../Debugger/SearchInContentCommand.cs        |   3 +-
 .../SearchInContentCommandResponse.cs         |  19 +
 .../iOS/Debugger/SetBreakpointByUrlCommand.cs |  35 +
 .../SetBreakpointByUrlCommandResponse.cs      |   3 +-
 .../iOS/Debugger/SetBreakpointCommand.cs      |  23 +
 .../Debugger/SetBreakpointCommandResponse.cs  |   3 +-
 .../Debugger/SetBreakpointsActiveCommand.cs   |   3 +-
 .../SetBreakpointsActiveCommandResponse.cs    |   3 +-
 .../iOS/Debugger/SetOverlayMessageCommand.cs  |  19 +
 .../SetOverlayMessageCommandResponse.cs       |  15 +
 .../Debugger/SetPauseOnExceptionsCommand.cs   |   3 +-
 .../SetPauseOnExceptionsCommandResponse.cs    |   3 +-
 .../{ => iOS}/Debugger/StepIntoCommand.cs     |   3 +-
 .../Debugger/StepIntoCommandResponse.cs       |   3 +-
 .../{ => iOS}/Debugger/StepOutCommand.cs      |   3 +-
 .../Debugger/StepOutCommandResponse.cs        |   3 +-
 .../{ => iOS}/Debugger/StepOverCommand.cs     |   3 +-
 .../Debugger/StepOverCommandResponse.cs       |   3 +-
 .../Protocol/iOS/GenericTypes/SearchMatch.cs  |  22 +
 .../IndexedDB/ClearObjectStoreCommand.cs      |   3 +-
 .../ClearObjectStoreCommandResponse.cs        |   3 +-
 .../Protocol/iOS/IndexedDB/DataEntry.cs       |  26 +
 .../iOS/IndexedDB/DatabaseWithObjectStores.cs |  26 +
 .../{ => iOS}/IndexedDB/DisableCommand.cs     |   3 +-
 .../IndexedDB/DisableCommandResponse.cs       |   3 +-
 .../{ => iOS}/IndexedDB/EnableCommand.cs      |   3 +-
 .../IndexedDB/EnableCommandResponse.cs        |   3 +-
 .../Protocol/{ => iOS}/IndexedDB/Key.cs       |   3 +-
 .../Protocol/{ => iOS}/IndexedDB/KeyPath.cs   |   3 +-
 .../Protocol/{ => iOS}/IndexedDB/KeyRange.cs  |   3 +-
 .../{ => iOS}/IndexedDB/ObjectStore.cs        |   3 +-
 .../{ => iOS}/IndexedDB/ObjectStoreIndex.cs   |   3 +-
 .../{ => iOS}/IndexedDB/RequestDataCommand.cs |   3 +-
 .../IndexedDB/RequestDataCommandResponse.cs   |   3 +-
 .../IndexedDB/RequestDatabaseCommand.cs       |   3 +-
 .../RequestDatabaseCommandResponse.cs         |   3 +-
 .../IndexedDB/RequestDatabaseNamesCommand.cs  |   3 +-
 .../RequestDatabaseNamesCommandResponse.cs    |   3 +-
 .../Inspector/ActivateExtraDomainsEvent.cs    |  17 +
 .../{ => iOS}/Inspector/DetachedEvent.cs      |   3 +-
 .../{ => iOS}/Inspector/DisableCommand.cs     |   3 +-
 .../Inspector/DisableCommandResponse.cs       |   3 +-
 .../{ => iOS}/Inspector/EnableCommand.cs      |   3 +-
 .../Inspector/EnableCommandResponse.cs        |   3 +-
 .../EvaluateForTestInFrontendEvent.cs         |  14 +
 .../iOS/Inspector/InitializedCommand.cs       |  15 +
 .../Inspector/InitializedCommandResponse.cs   |  15 +
 .../{ => iOS}/Inspector/InspectEvent.cs       |   3 +-
 .../{ => iOS}/Inspector/TargetCrashedEvent.cs |   3 +-
 .../iOS/LayerTree/CompositingReasons.cs       | 122 +++
 .../{ => iOS}/LayerTree/DisableCommand.cs     |   3 +-
 .../LayerTree/DisableCommandResponse.cs       |   3 +-
 .../{ => iOS}/LayerTree/EnableCommand.cs      |   3 +-
 .../LayerTree/EnableCommandResponse.cs        |   3 +-
 .../Protocol/iOS/LayerTree/IntRect.cs         |  30 +
 .../Protocol/iOS/LayerTree/Layer.cs           |  62 ++
 .../iOS/LayerTree/LayerTreeDidChangeEvent.cs  |  10 +
 .../iOS/LayerTree/LayersForNodeCommand.cs     |  19 +
 .../LayerTree/LayersForNodeCommandResponse.cs |  19 +
 .../ReasonsForCompositingLayerCommand.cs      |  19 +
 ...asonsForCompositingLayerCommandResponse.cs |  19 +
 .../Protocol/iOS/Network/CachedResource.cs    |  34 +
 .../Network/CanClearBrowserCacheCommand.cs    |   3 +-
 .../CanClearBrowserCacheCommandResponse.cs    |   3 +-
 .../Network/CanClearBrowserCookiesCommand.cs  |   3 +-
 .../CanClearBrowserCookiesCommandResponse.cs  |   3 +-
 .../Network/ClearBrowserCacheCommand.cs       |   3 +-
 .../ClearBrowserCacheCommandResponse.cs       |   3 +-
 .../Network/ClearBrowserCookiesCommand.cs     |   3 +-
 .../ClearBrowserCookiesCommandResponse.cs     |   3 +-
 .../{ => iOS}/Network/DataReceivedEvent.cs    |   3 +-
 .../{ => iOS}/Network/DisableCommand.cs       |   3 +-
 .../Network/DisableCommandResponse.cs         |   3 +-
 .../{ => iOS}/Network/EnableCommand.cs        |   3 +-
 .../Network/EnableCommandResponse.cs          |   3 +-
 .../Network/GetResponseBodyCommand.cs         |   3 +-
 .../Network/GetResponseBodyCommandResponse.cs |   3 +-
 .../Protocol/iOS/Network/Initiator.cs         |  30 +
 .../iOS/Network/LoadResourceCommand.cs        |  23 +
 .../Network/LoadResourceCommandResponse.cs    |  27 +
 .../iOS/Network/LoadingFailedEvent.cs         |  29 +
 .../iOS/Network/LoadingFinishedEvent.cs       |  25 +
 .../Protocol/{ => iOS}/Network/Request.cs     |   3 +-
 .../Network/RequestServedFromCacheEvent.cs    |   3 +-
 .../RequestServedFromMemoryCacheEvent.cs      |  41 +
 .../iOS/Network/RequestWillBeSentEvent.cs     |  49 ++
 .../Protocol/iOS/Network/ResourceTiming.cs    |  46 +
 .../Protocol/iOS/Network/Response.cs          |  54 ++
 .../Network/ResponseReceivedEvent.cs          |   3 +-
 .../Network/SetCacheDisabledCommand.cs        |   3 +-
 .../SetCacheDisabledCommandResponse.cs        |   3 +-
 .../Network/SetExtraHTTPHeadersCommand.cs     |   3 +-
 .../SetExtraHTTPHeadersCommandResponse.cs     |   3 +-
 .../{ => iOS}/Network/WebSocketClosedEvent.cs |   3 +-
 .../Network/WebSocketCreatedEvent.cs          |   3 +-
 .../Protocol/iOS/Network/WebSocketFrame.cs    |  26 +
 .../Network/WebSocketFrameErrorEvent.cs       |   3 +-
 .../Network/WebSocketFrameReceivedEvent.cs    |   3 +-
 .../Network/WebSocketFrameSentEvent.cs        |   3 +-
 ...WebSocketHandshakeResponseReceivedEvent.cs |   3 +-
 .../Protocol/iOS/Network/WebSocketRequest.cs  |  18 +
 .../Protocol/iOS/Network/WebSocketResponse.cs |  26 +
 .../WebSocketWillSendHandshakeRequestEvent.cs |  25 +
 .../iOS/OverlayTypes/ContentFlowData.cs       |  18 +
 .../Protocol/iOS/OverlayTypes/ElementData.cs  |  46 +
 .../iOS/OverlayTypes/FragmentHighlightData.cs |  42 +
 .../iOS/OverlayTypes/NodeHighlightData.cs     |  26 +
 .../iOS/OverlayTypes/OverlayConfiguration.cs  |  26 +
 .../Protocol/iOS/OverlayTypes/Point.cs        |  22 +
 .../Protocol/iOS/OverlayTypes/Rect.cs         |  30 +
 .../Protocol/iOS/OverlayTypes/Region.cs       |  30 +
 .../iOS/OverlayTypes/RegionFlowData.cs        |  22 +
 .../iOS/OverlayTypes/ShapeOutsideData.cs      |  26 +
 .../Protocol/iOS/OverlayTypes/Size.cs         |  22 +
 .../Page/AddScriptToEvaluateOnLoadCommand.cs  |   3 +-
 ...ddScriptToEvaluateOnLoadCommandResponse.cs |   3 +-
 .../Protocol/iOS/Page/ArchiveCommand.cs       |  15 +
 .../iOS/Page/ArchiveCommandResponse.cs        |  19 +
 .../Protocol/{Network => iOS/Page}/Cookie.cs  |   3 +-
 .../Protocol/iOS/Page/CoordinateSystem.cs     |  12 +
 .../{ => iOS}/Page/DeleteCookieCommand.cs     |   3 +-
 .../Page/DeleteCookieCommandResponse.cs       |   3 +-
 .../Protocol/{ => iOS}/Page/DisableCommand.cs |   3 +-
 .../{ => iOS}/Page/DisableCommandResponse.cs  |   3 +-
 .../Page/DomContentEventFiredEvent.cs         |   3 +-
 .../Protocol/{ => iOS}/Page/EnableCommand.cs  |   3 +-
 .../{ => iOS}/Page/EnableCommandResponse.cs   |   3 +-
 .../Protocol/{ => iOS}/Page/Frame.cs          |   3 +-
 .../FrameClearedScheduledNavigationEvent.cs   |   3 +-
 .../{ => iOS}/Page/FrameDetachedEvent.cs      |   3 +-
 .../{ => iOS}/Page/FrameNavigatedEvent.cs     |   3 +-
 .../Protocol/iOS/Page/FrameResource.cs        |  38 +
 .../Protocol/iOS/Page/FrameResourceTree.cs    |  26 +
 .../Page/FrameScheduledNavigationEvent.cs     |   3 +-
 .../Page/FrameStartedLoadingEvent.cs          |   3 +-
 .../Page/FrameStoppedLoadingEvent.cs          |   3 +-
 .../GetCompositingBordersVisibleCommand.cs    |  15 +
 ...ompositingBordersVisibleCommandResponse.cs |  19 +
 .../{ => iOS}/Page/GetCookiesCommand.cs       |   3 +-
 .../iOS/Page/GetCookiesCommandResponse.cs     |  19 +
 .../Page/GetResourceContentCommand.cs         |   3 +-
 .../Page/GetResourceContentCommandResponse.cs |   3 +-
 .../{ => iOS}/Page/GetResourceTreeCommand.cs  |   3 +-
 .../Page/GetResourceTreeCommandResponse.cs    |   3 +-
 .../Page/GetScriptExecutionStatusCommand.cs   |  15 +
 ...GetScriptExecutionStatusCommandResponse.cs |  19 +
 .../Page/HandleJavaScriptDialogCommand.cs     |   3 +-
 .../HandleJavaScriptDialogCommandResponse.cs  |   3 +-
 .../Page/JavascriptDialogClosedEvent.cs       |   3 +-
 .../Page/JavascriptDialogOpeningEvent.cs      |   3 +-
 .../{ => iOS}/Page/LoadEventFiredEvent.cs     |   3 +-
 .../{ => iOS}/Page/NavigateCommand.cs         |   3 +-
 .../iOS/Page/NavigateCommandResponse.cs       |  15 +
 .../Protocol/{ => iOS}/Page/ReloadCommand.cs  |   3 +-
 .../{ => iOS}/Page/ReloadCommandResponse.cs   |   3 +-
 .../RemoveScriptToEvaluateOnLoadCommand.cs    |   3 +-
 ...veScriptToEvaluateOnLoadCommandResponse.cs |   3 +-
 .../Protocol/iOS/Page/ResourceType.cs         |  18 +
 .../Protocol/iOS/Page/ScriptsEnabledEvent.cs  |  17 +
 .../{ => iOS}/Page/SearchInResourceCommand.cs |   3 +-
 .../Page/SearchInResourceCommandResponse.cs   |  19 +
 .../iOS/Page/SearchInResourcesCommand.cs      |  27 +
 .../Page/SearchInResourcesCommandResponse.cs  |  19 +
 .../Protocol/iOS/Page/SearchResult.cs         |  26 +
 .../SetCompositingBordersVisibleCommand.cs    |  19 +
 ...ompositingBordersVisibleCommandResponse.cs |  15 +
 .../Page/SetDocumentContentCommand.cs         |   3 +-
 .../Page/SetDocumentContentCommandResponse.cs |   3 +-
 .../iOS/Page/SetEmulatedMediaCommand.cs       |  19 +
 .../Page/SetEmulatedMediaCommandResponse.cs   |  15 +
 .../Page/SetScriptExecutionDisabledCommand.cs |  19 +
 ...tScriptExecutionDisabledCommandResponse.cs |  15 +
 .../iOS/Page/SetShowPaintRectsCommand.cs      |  19 +
 .../Page/SetShowPaintRectsCommandResponse.cs  |  15 +
 .../Page/SetTouchEmulationEnabledCommand.cs   |  19 +
 ...SetTouchEmulationEnabledCommandResponse.cs |   3 +-
 .../Protocol/iOS/Page/SnapshotNodeCommand.cs  |  19 +
 .../iOS/Page/SnapshotNodeCommandResponse.cs   |  19 +
 .../Protocol/iOS/Page/SnapshotRectCommand.cs  |  35 +
 .../iOS/Page/SnapshotRectCommandResponse.cs   |  19 +
 .../Protocol/iOS/ProtocolName.cs              | 327 +++++++
 .../Protocol/iOS/Runtime/BasicBlock.cs        |  26 +
 .../Protocol/iOS/Runtime/CallArgument.cs      |  22 +
 .../Runtime/CallFunctionOnCommand.cs          |   3 +-
 .../Runtime/CallFunctionOnCommandResponse.cs  |   3 +-
 .../Protocol/iOS/Runtime/CollectionEntry.cs   |  22 +
 .../{ => iOS}/Runtime/DisableCommand.cs       |   3 +-
 .../Runtime/DisableCommandResponse.cs         |   3 +-
 .../iOS/Runtime/DisableTypeProfilerCommand.cs |  15 +
 .../DisableTypeProfilerCommandResponse.cs     |  15 +
 .../{ => iOS}/Runtime/EnableCommand.cs        |   3 +-
 .../Runtime/EnableCommandResponse.cs          |   3 +-
 .../iOS/Runtime/EnableTypeProfilerCommand.cs  |  15 +
 .../EnableTypeProfilerCommandResponse.cs      |  15 +
 .../Protocol/iOS/Runtime/EntryPreview.cs      |  22 +
 .../Protocol/iOS/Runtime/ErrorRange.cs        |  22 +
 .../Protocol/iOS/Runtime/EvaluateCommand.cs   |  47 +
 .../iOS/Runtime/EvaluateCommandResponse.cs    |  27 +
 .../Runtime/ExecutionContextCreatedEvent.cs   |   3 +-
 .../Runtime/ExecutionContextDescription.cs    |  30 +
 .../iOS/Runtime/GetBasicBlocksCommand.cs      |  19 +
 .../Runtime/GetBasicBlocksCommandResponse.cs  |  19 +
 .../Runtime/GetCollectionEntriesCommand.cs    |  31 +
 .../GetCollectionEntriesCommandResponse.cs    |  19 +
 .../GetDisplayablePropertiesCommand.cs        |  23 +
 ...GetDisplayablePropertiesCommandResponse.cs |  23 +
 .../iOS/Runtime/GetPropertiesCommand.cs       |  27 +
 .../Runtime/GetPropertiesCommandResponse.cs   |  23 +
 ...untimeTypesForVariablesAtOffsetsCommand.cs |  19 +
 ...pesForVariablesAtOffsetsCommandResponse.cs |  19 +
 .../Runtime/InternalPropertyDescriptor.cs     |   3 +-
 .../Protocol/iOS/Runtime/ObjectPreview.cs     |  46 +
 .../Protocol/iOS/Runtime/ParseCommand.cs      |  19 +
 .../iOS/Runtime/ParseCommandResponse.cs       |  27 +
 .../iOS/Runtime/PropertyDescriptor.cs         |  58 ++
 .../Protocol/iOS/Runtime/PropertyPreview.cs   |  38 +
 .../{ => iOS}/Runtime/ReleaseObjectCommand.cs |   3 +-
 .../Runtime/ReleaseObjectCommandResponse.cs   |   3 +-
 .../Runtime/ReleaseObjectGroupCommand.cs      |   3 +-
 .../ReleaseObjectGroupCommandResponse.cs      |   3 +-
 .../Protocol/iOS/Runtime/RemoteObject.cs      |  50 ++
 .../Protocol/{ => iOS}/Runtime/RunCommand.cs  |   3 +-
 .../{ => iOS}/Runtime/RunCommandResponse.cs   |   3 +-
 .../Protocol/iOS/Runtime/SaveResultCommand.cs |  23 +
 .../iOS/Runtime/SaveResultCommandResponse.cs  |  19 +
 .../iOS/Runtime/StructureDescription.cs       |  34 +
 .../Protocol/iOS/Runtime/SyntaxErrorType.cs   |  14 +
 .../Protocol/iOS/Runtime/TypeDescription.cs   |  34 +
 .../Protocol/iOS/Runtime/TypeLocation.cs      |  26 +
 .../Protocol/iOS/Runtime/TypeSet.cs           |  50 ++
 .../Protocol/iOS/Timeline/CPUProfile.cs       |  22 +
 .../Protocol/iOS/Timeline/CPUProfileNode.cs   |  42 +
 .../CPUProfileNodeAggregateCallInfo.cs        |  30 +
 .../iOS/Timeline/EventRecordedEvent.cs        |  17 +
 .../Protocol/iOS/Timeline/EventType.cs        |  42 +
 .../iOS/Timeline/RecordingStartedEvent.cs     |  17 +
 .../iOS/Timeline/RecordingStoppedEvent.cs     |  17 +
 .../Protocol/iOS/Timeline/StartCommand.cs     |  19 +
 .../iOS/Timeline/StartCommandResponse.cs      |  15 +
 .../Protocol/iOS/Timeline/StopCommand.cs      |  15 +
 .../iOS/Timeline/StopCommandResponse.cs       |  15 +
 .../Protocol/iOS/Timeline/TimelineEvent.cs    |  26 +
 .../iOS/Worker/CanInspectWorkersCommand.cs    |  15 +
 .../CanInspectWorkersCommandResponse.cs       |  19 +
 .../iOS/Worker/ConnectToWorkerCommand.cs      |  16 +
 .../Worker/ConnectToWorkerCommandResponse.cs  |   3 +-
 .../{ => iOS}/Worker/DisableCommand.cs        |   3 +-
 .../Worker/DisableCommandResponse.cs          |   3 +-
 .../iOS/Worker/DisconnectFromWorkerCommand.cs |  16 +
 .../DisconnectFromWorkerCommandResponse.cs    |   3 +-
 .../iOS/Worker/DisconnectedFromWorkerEvent.cs |  10 +
 .../Worker/DispatchMessageFromWorkerEvent.cs  |  18 +
 .../{ => iOS}/Worker/EnableCommand.cs         |   3 +-
 .../{ => iOS}/Worker/EnableCommandResponse.cs |   3 +-
 .../iOS/Worker/SendMessageToWorkerCommand.cs  |  20 +
 .../SendMessageToWorkerCommandResponse.cs     |   3 +-
 .../Worker/SetAutoconnectToWorkersCommand.cs  |   3 +-
 .../SetAutoconnectToWorkersCommandResponse.cs |   3 +-
 .../Protocol/iOS/Worker/WorkerCreatedEvent.cs |  22 +
 .../iOS/Worker/WorkerTerminatedEvent.cs       |  14 +
 source/ProtocolGenerator/Program.cs           |  86 +-
 1327 files changed, 13173 insertions(+), 1654 deletions(-)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXGlobalStates.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXLiveRegionAttributes.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXNode.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXProperty.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXPropertySource.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXPropertySourceType.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXRelatedNode.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXRelationshipAttributes.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXValue.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXValueType.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXWidgetAttributes.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/AXWidgetStates.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/GetAXNodeCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Accessibility/GetAXNodeCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/AnimationNode.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/AnimationPlayer.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/AnimationPlayerCanceledEvent.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/AnimationPlayerCreatedEvent.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/EnableCommand.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/EnableCommandResponse.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/GetAnimationPlayersForNodeCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/GetAnimationPlayersForNodeCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/GetPlaybackRateCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/GetPlaybackRateCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/KeyframeStyle.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/KeyframesRule.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/SetCurrentTimeCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/SetCurrentTimeCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/SetPlaybackRateCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/SetPlaybackRateCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/SetTimingCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Animation/SetTimingCommandResponse.cs (75%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCache.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheResource.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/FrameWithManifest.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/ApplicationCache/NetworkStateUpdatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/AddRuleCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/AddRuleCommandResponse.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/CSSComputedStyleProperty.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CSSMedia.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CSSProperty.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CSSRule.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CSSStyle.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CSSStyleSheetHeader.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CreateStyleSheetCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/CreateStyleSheetCommandResponse.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/GetMatchedStylesForNodeCommand.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/GetMediaQueriesCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/GetMediaQueriesCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/GetPlatformFontsForNodeCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/GetPlatformFontsForNodeCommandResponse.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/InheritedStyleEntry.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/MediaQuery.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/MediaQueryExpression.cs (91%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryResultChangedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/PlatformFontUsage.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/PseudoIdMatches.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/RuleMatch.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/Selector.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SelectorList.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetMediaTextCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetMediaTextCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetPropertyTextCommand.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetPropertyTextCommandResponse.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetRuleSelectorCommand.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetStyleSheetTextCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SetStyleSheetTextCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/SourceRange.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetAddedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetChangedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CSS/StyleSheetOrigin.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetRemovedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/Cache.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/DataEntry.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/DeleteCacheCommand.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/DeleteCacheCommandResponse.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/RequestCacheNamesCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/RequestCacheNamesCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/RequestEntriesCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/CacheStorage/RequestEntriesCommandResponse.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/Call.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/CallArgument.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/CaptureFrameCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/CaptureFrameCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/ContextCreatedEvent.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/DisableCommand.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/DisableCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/DropTraceLogCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/DropTraceLogCommandResponse.cs (70%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/EnableCommand.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/EnableCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/EvaluateTraceLogCallArgumentCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/GetResourceStateCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/GetResourceStateCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/GetTraceLogCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/GetTraceLogCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/HasUninstrumentedCanvasesCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/HasUninstrumentedCanvasesCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/ReplayTraceLogCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/ReplayTraceLogCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/ResourceState.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/ResourceStateDescriptor.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/StartCapturingCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/StartCapturingCommandResponse.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/StopCapturingCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/StopCapturingCommandResponse.cs (70%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/TraceLog.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Canvas/TraceLogsRemovedEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Console/AsyncStackTrace.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Console/CallFrame.cs (90%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Console/ConsoleMessage.cs (96%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/MessageAddedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Console/MessageRepeatCountUpdatedEvent.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/AttributeModifiedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/AttributeRemovedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/BackendNode.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/BoxModel.cs (91%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/CharacterDataModifiedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeCountUpdatedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeInsertedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeRemovedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/CopyToCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/CopyToCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/DisableCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/DisableCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/DistributedNodesUpdatedEvent.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/DocumentUpdatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/EnableCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/EnableCommandResponse.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/EventListener.cs (92%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetBoxModelCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetBoxModelCommandResponse.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetHighlightObjectForTestCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetHighlightObjectForTestCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetNodeForLocationCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetNodeForLocationCommandResponse.cs (83%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetRelayoutBoundaryCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/GetRelayoutBoundaryCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/HighlightConfig.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/HighlightFrameCommand.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/HighlightNodeCommand.cs (91%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/HighlightQuadCommand.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/HighlightRectCommand.cs (92%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/InlineStyleInvalidatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/InspectNodeRequestedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/MoveToCommand.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/Node.cs (98%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/PerformSearchCommand.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementAddedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementRemovedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/PseudoType.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/PushNodesByBackendIdsToFrontendCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/RGBA.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/Rect.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetChildNodesEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/SetFileInputFilesCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/SetFileInputFilesCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/SetInspectModeEnabledCommand.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/SetInspectModeEnabledCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/SetInspectedNodeCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/SetInspectedNodeCommandResponse.cs (81%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPoppedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPushedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/ShadowRootType.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOM/ShapeOutsideInfo.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/DOMBreakpointType.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOMDebugger/RemoveEventListenerBreakpointCommand.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DOMDebugger/SetEventListenerBreakpointCommand.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemAddedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemRemovedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemUpdatedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemsClearedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/DOMStorage/StorageId.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/AddDatabaseEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/Database.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/Error.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/AsyncOperation.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/AsyncOperationCompletedEvent.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/AsyncOperationStartedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/BreakpointResolvedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/CallFrame.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/CanSetScriptSourceCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/CanSetScriptSourceCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/CollectionEntry.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/CompileScriptCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/CompileScriptCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/ContinueToLocationCommand.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/DisablePromiseTrackerCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/DisablePromiseTrackerCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/EnablePromiseTrackerCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/EnablePromiseTrackerCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/EvaluateOnCallFrameCommand.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/EvaluateOnCallFrameCommandResponse.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/ExceptionDetails.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/FlushAsyncOperationEventsCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/FlushAsyncOperationEventsCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/FunctionDetails.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GeneratorObjectDetails.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetBacktraceCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetBacktraceCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetCollectionEntriesCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetCollectionEntriesCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetFunctionDetailsCommand.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetGeneratorObjectDetailsCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetGeneratorObjectDetailsCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetPromiseByIdCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetPromiseByIdCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetPromisesCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetPromisesCommandResponse.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetStepInPositionsCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/GetStepInPositionsCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/Location.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/PausedEvent.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/PromiseDetails.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/PromiseUpdatedEvent.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/RemoveAsyncOperationBreakpointCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/RestartFrameCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/RestartFrameCommandResponse.cs (88%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/ResumedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/RunScriptCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/RunScriptCommandResponse.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/ScriptFailedToParseEvent.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/ScriptParsedEvent.cs (95%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SearchInContentCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SearchMatch.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetAsyncCallStackDepthCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetAsyncCallStackDepthCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetAsyncOperationBreakpointCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetAsyncOperationBreakpointCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetBreakpointByUrlCommand.cs (94%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetBreakpointCommand.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetScriptSourceCommand.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetScriptSourceCommandResponse.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetScriptSourceError.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetSkipAllPausesCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetSkipAllPausesCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetVariableValueCommand.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SetVariableValueCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SkipStackFramesCommand.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/SkipStackFramesCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/StackTrace.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/StepIntoAsyncCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Debugger/StepIntoAsyncCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/CanEmulateCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/CanEmulateCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ClearDeviceMetricsOverrideCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ClearGeolocationOverrideCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ClearGeolocationOverrideCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ResetScrollAndPageScaleFactorCommand.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetDeviceMetricsOverrideCommand.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetDeviceMetricsOverrideCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetEmulatedMediaCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetEmulatedMediaCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetGeolocationOverrideCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetGeolocationOverrideCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetPageScaleFactorCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetPageScaleFactorCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetScriptExecutionDisabledCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetScriptExecutionDisabledCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetTouchEmulationEnabledCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/SetTouchEmulationEnabledCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/Viewport.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Emulation/ViewportChangedEvent.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/DeleteEntryCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/DeleteEntryCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/DisableCommand.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/DisableCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/EnableCommand.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/EnableCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/Entry.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/Metadata.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestDirectoryContentCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestDirectoryContentCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestFileContentCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestFileContentCommandResponse.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestFileSystemRootCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestFileSystemRootCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestMetadataCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/FileSystem/RequestMetadataCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/AddHeapSnapshotChunkEvent.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/AddInspectedHeapObjectCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/CollectGarbageCommand.cs (67%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/CollectGarbageCommandResponse.cs (69%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/DisableCommand.cs (66%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/DisableCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/EnableCommand.cs (65%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/EnableCommandResponse.cs (67%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/GetHeapObjectIdCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/GetHeapObjectIdCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/GetObjectByHeapObjectIdCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/HeapStatsUpdateEvent.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/LastSeenObjectIdEvent.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/ReportHeapSnapshotProgressEvent.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/ResetProfilesEvent.cs (58%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/StartTrackingHeapObjectsCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/StopTrackingHeapObjectsCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/TakeHeapSnapshotCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/HeapProfiler/TakeHeapSnapshotCommandResponse.cs (70%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/IndexedDB/DataEntry.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/IndexedDB/DatabaseWithObjectStores.cs (88%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/Key.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyPath.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyRange.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStore.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStoreIndex.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/DispatchKeyEventCommand.cs (96%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/DispatchKeyEventCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/DispatchMouseEventCommand.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/DispatchMouseEventCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/DispatchTouchEventCommand.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/DispatchTouchEventCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/EmulateTouchFromMouseEventCommand.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/EmulateTouchFromMouseEventCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/GestureSourceType.cs (70%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/SynthesizePinchGestureCommand.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/SynthesizePinchGestureCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/SynthesizeScrollGestureCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/SynthesizeScrollGestureCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/SynthesizeTapGestureCommand.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/SynthesizeTapGestureCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Input/TouchPoint.cs (94%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/DetachedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Inspector/EvaluateForTestInFrontendEvent.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Inspector/TargetCrashedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/CompositingReasonsCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/CompositingReasonsCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/Layer.cs (96%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/LayerPaintedEvent.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/LayerTreeDidChangeEvent.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/LoadSnapshotCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/LoadSnapshotCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/MakeSnapshotCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/MakeSnapshotCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/PictureTile.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ProfileSnapshotCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ProfileSnapshotCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ReleaseSnapshotCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ReleaseSnapshotCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ReplaySnapshotCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ReplaySnapshotCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/ScrollRect.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/SnapshotCommandLogCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/LayerTree/SnapshotCommandLogCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Memory/GetDOMCountersCommand.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Memory/GetDOMCountersCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/CachedResource.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/CanEmulateNetworkConditionsCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/CanEmulateNetworkConditionsCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/DataReceivedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/DeleteCookieCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/DeleteCookieCommandResponse.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/DisableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/EmulateNetworkConditionsCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/EmulateNetworkConditionsCommandResponse.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/EnableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/EventSourceMessageReceivedEvent.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/GetCookiesCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/GetCookiesCommandResponse.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/Initiator.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/LoadingFailedEvent.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/LoadingFinishedEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/ReplayXHRCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/ReplayXHRCommandResponse.cs (83%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/Request.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/RequestServedFromCacheEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/RequestWillBeSentEvent.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/ResourceTiming.cs (96%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/Response.cs (96%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/ResponseReceivedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/SetDataSizeLimitsForTestCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/SetDataSizeLimitsForTestCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/SetMonitoringXHREnabledCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/SetMonitoringXHREnabledCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/SetUserAgentOverrideCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/SetUserAgentOverrideCommandResponse.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/WebSocketClosedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/WebSocketFrame.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameErrorEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameReceivedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameSentEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Network/WebSocketHandshakeResponseReceivedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/WebSocketRequest.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/WebSocketResponse.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Network/WebSocketWillSendHandshakeRequestEvent.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/CanScreencastCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/CanScreencastCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/CaptureScreenshotCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/CaptureScreenshotCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ClearDeviceMetricsOverrideCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ClearDeviceMetricsOverrideCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ClearDeviceOrientationOverrideCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ClearDeviceOrientationOverrideCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ClearGeolocationOverrideCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ClearGeolocationOverrideCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ColorPickedEvent.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/DomContentEventFiredEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/EnableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/Frame.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/FrameAttachedEvent.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/FrameClearedScheduledNavigationEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/FrameDetachedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/FrameNavigatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/FrameResizedEvent.cs (58%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/FrameResourceTree.cs (93%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/FrameScheduledNavigationEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/FrameStartedLoadingEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/FrameStoppedLoadingEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/GetCookiesCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/GetNavigationHistoryCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/GetNavigationHistoryCommandResponse.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/InterstitialHiddenEvent.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/InterstitialShownEvent.cs (71%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogClosedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogOpeningEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/LoadEventFiredEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/NavigateCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/NavigateToHistoryEntryCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/NavigateToHistoryEntryCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/NavigationEntry.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ResourceType.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ScreencastFrameAckCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ScreencastFrameAckCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ScreencastFrameEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ScreencastFrameMetadata.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/ScreencastVisibilityChangedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SearchInResourceCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetColorPickerEnabledCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetColorPickerEnabledCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetDeviceMetricsOverrideCommand.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetDeviceMetricsOverrideCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetDeviceOrientationOverrideCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetDeviceOrientationOverrideCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetGeolocationOverrideCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetGeolocationOverrideCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetOverlayMessageCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetOverlayMessageCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetShowViewportSizeOnResizeCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetShowViewportSizeOnResizeCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/SetTouchEmulationEnabledCommand.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/StartScreencastCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/StartScreencastCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/StopScreencastCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Page/StopScreencastCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/CanProfilePowerCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/CanProfilePowerCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/DataAvailableEvent.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/EndCommand.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/EndCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/GetAccuracyLevelCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/GetAccuracyLevelCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/PowerEvent.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/StartCommand.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Power/StartCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/CPUProfile.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/CPUProfileNode.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/ConsoleProfileFinishedEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/ConsoleProfileStartedEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/DisableCommand.cs (66%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/DisableCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/EnableCommand.cs (66%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/EnableCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/PositionTickInfo.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/SetSamplingIntervalCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/SetSamplingIntervalCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/StartCommand.cs (66%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/StartCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/StopCommand.cs (65%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Profiler/StopCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ProtocolName.cs (99%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetContinuousPaintingEnabledCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetContinuousPaintingEnabledCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowDebugBordersCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowDebugBordersCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowFPSCounterCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowFPSCounterCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowPaintRectsCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowPaintRectsCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowScrollBottleneckRectsCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/CallArgument.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/CustomPreview.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/EntryPreview.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/EvaluateCommand.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/EvaluateCommandResponse.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/EventListener.cs (89%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextCreatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/ExecutionContextDescription.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/ExecutionContextDestroyedEvent.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/ExecutionContextsClearedEvent.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/GetEventListenersCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/GetEventListenersCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/GetPropertiesCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/GetPropertiesCommandResponse.cs (88%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/InternalPropertyDescriptor.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/IsRunRequiredCommand.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/IsRunRequiredCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/ObjectPreview.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/PropertyDescriptor.cs (95%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/PropertyPreview.cs (90%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/RemoteObject.cs (94%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/SetCustomObjectFormatterEnabledCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/DebugOnStartUpdatedEvent.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/DeliverPushMessageCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/DeliverPushMessageCommandResponse.cs (70%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/DisableCommand.cs (66%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/DisableCommandResponse.cs (67%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/DispatchMessageEvent.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/EnableCommand.cs (65%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/EnableCommandResponse.cs (67%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/InspectWorkerCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/InspectWorkerCommandResponse.cs (69%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/SendMessageCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/SendMessageCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/ServiceWorkerErrorMessage.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/ServiceWorkerRegistration.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/ServiceWorkerVersion.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/ServiceWorkerVersionRunningStatus.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/ServiceWorkerVersionStatus.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/SetDebugOnStartCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/SetDebugOnStartCommandResponse.cs (69%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/StartWorkerCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/StartWorkerCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/StopCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/StopCommandResponse.cs (67%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/StopWorkerCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/StopWorkerCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/UnregisterCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/UnregisterCommandResponse.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/UpdateRegistrationCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/UpdateRegistrationCommandResponse.cs (70%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/WorkerCreatedEvent.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/WorkerErrorReportedEvent.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/WorkerRegistrationUpdatedEvent.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/WorkerTerminatedEvent.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/ServiceWorker/WorkerVersionUpdatedEvent.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/DisableCommand.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/DisableCommandResponse.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/EnableCommand.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/EnableCommandResponse.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/EventRecordedEvent.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/StartCommand.cs (92%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/StartCommandResponse.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/StopCommand.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/StopCommandResponse.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Timeline/TimelineEvent.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/BufferUsageEvent.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/DataCollectedEvent.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/EndCommand.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/EndCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/GetCategoriesCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/GetCategoriesCommandResponse.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/StartCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/StartCommandResponse.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Tracing/TracingCompleteEvent.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Worker/ConnectToWorkerCommand.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Worker/DisconnectFromWorkerCommand.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Worker/DispatchMessageFromWorkerEvent.cs (80%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Worker/SendMessageToWorkerCommand.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Worker/WorkerCreatedEvent.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => Chrome}/Worker/WorkerTerminatedEvent.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/ApplicationCache.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/ApplicationCacheResource.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/EnableCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/EnableCommandResponse.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/FrameWithManifest.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/GetApplicationCacheForFrameCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/GetFramesWithManifestsCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/GetFramesWithManifestsCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/GetManifestForFrameCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/GetManifestForFrameCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/ApplicationCache/NetworkStateUpdatedEvent.cs (73%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/CSSComputedStyleProperty.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSMedia.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSProperty.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyInfo.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyStatus.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSRule.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSRuleId.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSSelector.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSStyle.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleAttribute.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleId.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetBody.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetHeader.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/DisableCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/DisableCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/EnableCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/EnableCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/ForcePseudoStateCommand.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/ForcePseudoStateCommandResponse.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetComputedStyleForNodeCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetComputedStyleForNodeCommandResponse.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetInlineStylesForNodeCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetInlineStylesForNodeCommandResponse.cs (90%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetMatchedStylesForNodeCommandResponse.cs (91%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetStyleSheetTextCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/GetStyleSheetTextCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/InheritedStyleEntry.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/MediaQueryResultChangedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/NamedFlow.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowCreatedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowRemovedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/PseudoIdMatches.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/Region.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/RegionOversetChangedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/RegisteredNamedFlowContentElementEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/RuleMatch.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SelectorList.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/SetRuleSelectorCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/ShorthandEntry.cs (83%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/SourceRange.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/StyleSheetAddedEvent.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/StyleSheetChangedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetOrigin.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/CSS/StyleSheetRemovedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/CSS/UnregisteredNamedFlowContentElementEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/CallFrame.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/ClearMessagesCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/ClearMessagesCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/ConsoleMessage.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/DisableCommand.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/DisableCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/EnableCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/EnableCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/MessageAddedEvent.cs (80%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/MessageRepeatCountUpdatedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Console/MessagesClearedEvent.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/AccessibilityProperties.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/AttributeModifiedEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/AttributeRemovedEvent.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/CharacterDataModifiedEvent.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ChildNodeCountUpdatedEvent.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ChildNodeInsertedEvent.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ChildNodeRemovedEvent.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/DiscardSearchResultsCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/DiscardSearchResultsCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/DocumentUpdatedEvent.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/EventListener.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/FocusCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/FocusCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetAttributesCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetAttributesCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetDocumentCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetDocumentCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetEventListenersForNodeCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetEventListenersForNodeCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetOuterHTMLCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetOuterHTMLCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetSearchResultsCommand.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/GetSearchResultsCommandResponse.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/HideHighlightCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/HideHighlightCommandResponse.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightConfig.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/HighlightFrameCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/HighlightNodeCommandResponse.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/HighlightQuadCommandResponse.cs (81%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/HighlightRectCommandResponse.cs (81%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/InlineStyleInvalidatedEvent.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/LiveRegionRelevant.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/MarkUndoableStateCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/MarkUndoableStateCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/MoveToCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/Node.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/PerformSearchCommandResponse.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/PseudoElementAddedEvent.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/PseudoElementRemovedEvent.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/PseudoType.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/PushNodeByPathToFrontendCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/PushNodeByPathToFrontendCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/QuerySelectorAllCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/QuerySelectorAllCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/QuerySelectorCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/QuerySelectorCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/RGBAColor.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RedoCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RedoCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RemoveAttributeCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RemoveAttributeCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RemoveNodeCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RemoveNodeCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RequestChildNodesCommand.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RequestChildNodesCommandResponse.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RequestNodeCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/RequestNodeCommandResponse.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ResolveNodeCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ResolveNodeCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetAttributeValueCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetAttributeValueCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetAttributesAsTextCommand.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetAttributesAsTextCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetChildNodesEvent.cs (87%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetNodeNameCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetNodeNameCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetNodeValueCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetNodeValueCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetOuterHTMLCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/SetOuterHTMLCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ShadowRootPoppedEvent.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/ShadowRootPushedEvent.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/UndoCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOM/UndoCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/DOMBreakpointType.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/RemoveDOMBreakpointCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/RemoveXHRBreakpointCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetDOMBreakpointCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetDOMBreakpointCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetInstrumentationBreakpointCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetXHRBreakpointCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMDebugger/SetXHRBreakpointCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/DisableCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/DisableCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/DomStorageItemAddedEvent.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/DomStorageItemRemovedEvent.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/DomStorageItemUpdatedEvent.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/DomStorageItemsClearedEvent.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/EnableCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/EnableCommandResponse.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/GetDOMStorageItemsCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/GetDOMStorageItemsCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/RemoveDOMStorageItemCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/RemoveDOMStorageItemCommandResponse.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/SetDOMStorageItemCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/SetDOMStorageItemCommandResponse.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/DOMStorage/StorageId.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/AddDatabaseEvent.cs (73%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/Database.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/DisableCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/DisableCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/EnableCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/EnableCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/Error.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/ExecuteSQLCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/ExecuteSQLCommandResponse.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/GetDatabaseTableNamesCommand.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Database/GetDatabaseTableNamesCommandResponse.cs (80%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/AssertPauseReason.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointAction.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointOptions.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointPauseReason.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/BreakpointResolvedEvent.cs (85%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/CSPViolationPauseReason.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/CallFrame.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/ContinueToLocationCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/DidSampleProbeEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/DisableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/DisableCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/EnableCommand.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/EnableCommandResponse.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/FunctionDetails.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/GetFunctionDetailsCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/GetScriptSourceCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/GetScriptSourceCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/GlobalObjectClearedEvent.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/Location.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/PauseCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/PauseCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/PausedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/PlayBreakpointActionSoundEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/ProbeSample.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/RemoveBreakpointCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/RemoveBreakpointCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/ResumeCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/ResumeCommandResponse.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/ResumedEvent.cs (71%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/Scope.cs (88%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/ScriptFailedToParseEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/ScriptParsedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SearchInContentCommand.cs (90%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SetBreakpointByUrlCommandResponse.cs (92%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SetBreakpointCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SetBreakpointsActiveCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SetBreakpointsActiveCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SetPauseOnExceptionsCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/SetPauseOnExceptionsCommandResponse.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/StepIntoCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/StepIntoCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/StepOutCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/StepOutCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/StepOverCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Debugger/StepOverCommandResponse.cs (75%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/GenericTypes/SearchMatch.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/ClearObjectStoreCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/ClearObjectStoreCommandResponse.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/IndexedDB/DataEntry.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/IndexedDB/DatabaseWithObjectStores.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/DisableCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/DisableCommandResponse.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/EnableCommand.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/EnableCommandResponse.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/Key.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/KeyPath.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/KeyRange.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/ObjectStore.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/ObjectStoreIndex.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/RequestDataCommand.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/RequestDataCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/RequestDatabaseCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/RequestDatabaseCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/RequestDatabaseNamesCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/IndexedDB/RequestDatabaseNamesCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Inspector/ActivateExtraDomainsEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/DetachedEvent.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/DisableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/DisableCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/EnableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/EnableCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Inspector/EvaluateForTestInFrontendEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/InspectEvent.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Inspector/TargetCrashedEvent.cs (71%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/CompositingReasons.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/LayerTree/DisableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/LayerTree/DisableCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/LayerTree/EnableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/LayerTree/EnableCommandResponse.cs (76%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/IntRect.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/Layer.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/LayerTreeDidChangeEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/CachedResource.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/CanClearBrowserCacheCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/CanClearBrowserCacheCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/CanClearBrowserCookiesCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/CanClearBrowserCookiesCommandResponse.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/ClearBrowserCacheCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/ClearBrowserCacheCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/ClearBrowserCookiesCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/ClearBrowserCookiesCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/DataReceivedEvent.cs (90%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/DisableCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/DisableCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/EnableCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/EnableCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/GetResponseBodyCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/GetResponseBodyCommandResponse.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/Initiator.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/LoadingFailedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/LoadingFinishedEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/Request.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/RequestServedFromCacheEvent.cs (80%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromMemoryCacheEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/RequestWillBeSentEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/ResourceTiming.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/Response.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/ResponseReceivedEvent.cs (91%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/SetCacheDisabledCommand.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/SetCacheDisabledCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/SetExtraHTTPHeadersCommand.cs (85%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/SetExtraHTTPHeadersCommandResponse.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/WebSocketClosedEvent.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/WebSocketCreatedEvent.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrame.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/WebSocketFrameErrorEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/WebSocketFrameReceivedEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/WebSocketFrameSentEvent.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Network/WebSocketHandshakeResponseReceivedEvent.cs (88%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/WebSocketRequest.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/WebSocketResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Network/WebSocketWillSendHandshakeRequestEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/ContentFlowData.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/ElementData.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/FragmentHighlightData.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/NodeHighlightData.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/OverlayConfiguration.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/Point.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/Rect.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/Region.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/RegionFlowData.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/ShapeOutsideData.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/OverlayTypes/Size.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/AddScriptToEvaluateOnLoadCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/AddScriptToEvaluateOnLoadCommandResponse.cs (81%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{Network => iOS/Page}/Cookie.cs (93%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/CoordinateSystem.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/DeleteCookieCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/DeleteCookieCommandResponse.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/DisableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/DisableCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/DomContentEventFiredEvent.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/EnableCommand.cs (75%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/EnableCommandResponse.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/Frame.cs (93%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/FrameClearedScheduledNavigationEvent.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/FrameDetachedEvent.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/FrameNavigatedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/FrameResource.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/FrameResourceTree.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/FrameScheduledNavigationEvent.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/FrameStartedLoadingEvent.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/FrameStoppedLoadingEvent.cs (81%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/GetCookiesCommand.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/GetResourceContentCommand.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/GetResourceContentCommandResponse.cs (87%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/GetResourceTreeCommand.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/GetResourceTreeCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/HandleJavaScriptDialogCommand.cs (89%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/HandleJavaScriptDialogCommandResponse.cs (81%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/JavascriptDialogClosedEvent.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/JavascriptDialogOpeningEvent.cs (84%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/LoadEventFiredEvent.cs (74%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/NavigateCommand.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/NavigateCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/ReloadCommand.cs (88%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/ReloadCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/RemoveScriptToEvaluateOnLoadCommand.cs (80%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs (74%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/ResourceType.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/ScriptsEnabledEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/SearchInResourceCommand.cs (92%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SearchResult.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/SetDocumentContentCommand.cs (86%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/SetDocumentContentCommandResponse.cs (78%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Page/SetTouchEmulationEnabledCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/ProtocolName.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/BasicBlock.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/CallArgument.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/CallFunctionOnCommand.cs (94%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/CallFunctionOnCommandResponse.cs (88%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/CollectionEntry.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/DisableCommand.cs (76%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/DisableCommandResponse.cs (77%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/EnableCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/EnableCommandResponse.cs (84%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/EntryPreview.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/ErrorRange.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/ExecutionContextCreatedEvent.cs (82%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextDescription.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommandResponse.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/InternalPropertyDescriptor.cs (86%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/ObjectPreview.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/PropertyDescriptor.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/PropertyPreview.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/ReleaseObjectCommand.cs (82%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/ReleaseObjectCommandResponse.cs (77%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/ReleaseObjectGroupCommand.cs (83%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/ReleaseObjectGroupCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/RemoteObject.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/RunCommand.cs (78%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Runtime/RunCommandResponse.cs (79%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/StructureDescription.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/SyntaxErrorType.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/TypeDescription.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/TypeLocation.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Runtime/TypeSet.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfile.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNode.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNodeAggregateCallInfo.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/EventRecordedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/EventType.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStartedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStoppedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/StartCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/StopCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Timeline/TimelineEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommandResponse.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/ConnectToWorkerCommandResponse.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/DisableCommand.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/DisableCommandResponse.cs (70%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/DisconnectFromWorkerCommandResponse.cs (73%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/DisconnectedFromWorkerEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/DispatchMessageFromWorkerEvent.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/EnableCommand.cs (68%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/EnableCommandResponse.cs (70%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/SendMessageToWorkerCommandResponse.cs (72%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/SetAutoconnectToWorkersCommand.cs (79%)
 rename source/ChromeDevTools/Protocol/{ => iOS}/Worker/SetAutoconnectToWorkersCommandResponse.cs (73%)
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/WorkerCreatedEvent.cs
 create mode 100644 source/ChromeDevTools/Protocol/iOS/Worker/WorkerTerminatedEvent.cs

diff --git a/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj b/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj
index c8c40e0..7feff54 100644
--- a/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj
+++ b/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj
@@ -76,809 +76,7 @@
     <Compile Include="IMethodTypeMap.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ProtocolNameAttribute.cs" />
-    <Compile Include="Protocol\Accessibility\AXGlobalStates.cs" />
-    <Compile Include="Protocol\Accessibility\AXLiveRegionAttributes.cs" />
-    <Compile Include="Protocol\Accessibility\AXNode.cs" />
-    <Compile Include="Protocol\Accessibility\AXProperty.cs" />
-    <Compile Include="Protocol\Accessibility\AXPropertySource.cs" />
-    <Compile Include="Protocol\Accessibility\AXPropertySourceType.cs" />
-    <Compile Include="Protocol\Accessibility\AXRelatedNode.cs" />
-    <Compile Include="Protocol\Accessibility\AXRelationshipAttributes.cs" />
-    <Compile Include="Protocol\Accessibility\AXValue.cs" />
-    <Compile Include="Protocol\Accessibility\AXValueType.cs" />
-    <Compile Include="Protocol\Accessibility\AXWidgetAttributes.cs" />
-    <Compile Include="Protocol\Accessibility\AXWidgetStates.cs" />
-    <Compile Include="Protocol\Accessibility\GetAXNodeCommand.cs" />
-    <Compile Include="Protocol\Accessibility\GetAXNodeCommandResponse.cs" />
-    <Compile Include="Protocol\Animation\AnimationNode.cs" />
-    <Compile Include="Protocol\Animation\AnimationPlayer.cs" />
-    <Compile Include="Protocol\Animation\AnimationPlayerCanceledEvent.cs" />
-    <Compile Include="Protocol\Animation\AnimationPlayerCreatedEvent.cs" />
-    <Compile Include="Protocol\Animation\EnableCommand.cs" />
-    <Compile Include="Protocol\Animation\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Animation\GetAnimationPlayersForNodeCommand.cs" />
-    <Compile Include="Protocol\Animation\GetAnimationPlayersForNodeCommandResponse.cs" />
-    <Compile Include="Protocol\Animation\GetPlaybackRateCommand.cs" />
-    <Compile Include="Protocol\Animation\GetPlaybackRateCommandResponse.cs" />
-    <Compile Include="Protocol\Animation\KeyframesRule.cs" />
-    <Compile Include="Protocol\Animation\KeyframeStyle.cs" />
-    <Compile Include="Protocol\Animation\SetCurrentTimeCommand.cs" />
-    <Compile Include="Protocol\Animation\SetCurrentTimeCommandResponse.cs" />
-    <Compile Include="Protocol\Animation\SetPlaybackRateCommand.cs" />
-    <Compile Include="Protocol\Animation\SetPlaybackRateCommandResponse.cs" />
-    <Compile Include="Protocol\Animation\SetTimingCommand.cs" />
-    <Compile Include="Protocol\Animation\SetTimingCommandResponse.cs" />
-    <Compile Include="Protocol\ApplicationCache\ApplicationCache.cs" />
-    <Compile Include="Protocol\ApplicationCache\ApplicationCacheResource.cs" />
-    <Compile Include="Protocol\ApplicationCache\ApplicationCacheStatusUpdatedEvent.cs" />
-    <Compile Include="Protocol\ApplicationCache\EnableCommand.cs" />
-    <Compile Include="Protocol\ApplicationCache\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\ApplicationCache\FrameWithManifest.cs" />
-    <Compile Include="Protocol\ApplicationCache\GetApplicationCacheForFrameCommand.cs" />
-    <Compile Include="Protocol\ApplicationCache\GetApplicationCacheForFrameCommandResponse.cs" />
-    <Compile Include="Protocol\ApplicationCache\GetFramesWithManifestsCommand.cs" />
-    <Compile Include="Protocol\ApplicationCache\GetFramesWithManifestsCommandResponse.cs" />
-    <Compile Include="Protocol\ApplicationCache\GetManifestForFrameCommand.cs" />
-    <Compile Include="Protocol\ApplicationCache\GetManifestForFrameCommandResponse.cs" />
-    <Compile Include="Protocol\ApplicationCache\NetworkStateUpdatedEvent.cs" />
-    <Compile Include="Protocol\CacheStorage\Cache.cs" />
-    <Compile Include="Protocol\CacheStorage\DataEntry.cs" />
-    <Compile Include="Protocol\CacheStorage\DeleteCacheCommand.cs" />
-    <Compile Include="Protocol\CacheStorage\DeleteCacheCommandResponse.cs" />
-    <Compile Include="Protocol\CacheStorage\RequestCacheNamesCommand.cs" />
-    <Compile Include="Protocol\CacheStorage\RequestCacheNamesCommandResponse.cs" />
-    <Compile Include="Protocol\CacheStorage\RequestEntriesCommand.cs" />
-    <Compile Include="Protocol\CacheStorage\RequestEntriesCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\Call.cs" />
-    <Compile Include="Protocol\Canvas\CallArgument.cs" />
-    <Compile Include="Protocol\Canvas\CaptureFrameCommand.cs" />
-    <Compile Include="Protocol\Canvas\CaptureFrameCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\ContextCreatedEvent.cs" />
-    <Compile Include="Protocol\Canvas\DisableCommand.cs" />
-    <Compile Include="Protocol\Canvas\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\DropTraceLogCommand.cs" />
-    <Compile Include="Protocol\Canvas\DropTraceLogCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\EnableCommand.cs" />
-    <Compile Include="Protocol\Canvas\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\EvaluateTraceLogCallArgumentCommand.cs" />
-    <Compile Include="Protocol\Canvas\EvaluateTraceLogCallArgumentCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\GetResourceStateCommand.cs" />
-    <Compile Include="Protocol\Canvas\GetResourceStateCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\GetTraceLogCommand.cs" />
-    <Compile Include="Protocol\Canvas\GetTraceLogCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\HasUninstrumentedCanvasesCommand.cs" />
-    <Compile Include="Protocol\Canvas\HasUninstrumentedCanvasesCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\ReplayTraceLogCommand.cs" />
-    <Compile Include="Protocol\Canvas\ReplayTraceLogCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\ResourceState.cs" />
-    <Compile Include="Protocol\Canvas\ResourceStateDescriptor.cs" />
-    <Compile Include="Protocol\Canvas\StartCapturingCommand.cs" />
-    <Compile Include="Protocol\Canvas\StartCapturingCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\StopCapturingCommand.cs" />
-    <Compile Include="Protocol\Canvas\StopCapturingCommandResponse.cs" />
-    <Compile Include="Protocol\Canvas\TraceLog.cs" />
-    <Compile Include="Protocol\Canvas\TraceLogsRemovedEvent.cs" />
-    <Compile Include="Protocol\Console\AsyncStackTrace.cs" />
-    <Compile Include="Protocol\Console\CallFrame.cs" />
-    <Compile Include="Protocol\Console\ClearMessagesCommand.cs" />
-    <Compile Include="Protocol\Console\ClearMessagesCommandResponse.cs" />
-    <Compile Include="Protocol\Console\ConsoleMessage.cs" />
-    <Compile Include="Protocol\Console\DisableCommand.cs" />
-    <Compile Include="Protocol\Console\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Console\EnableCommand.cs" />
-    <Compile Include="Protocol\Console\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Console\MessageAddedEvent.cs" />
-    <Compile Include="Protocol\Console\MessageRepeatCountUpdatedEvent.cs" />
-    <Compile Include="Protocol\Console\MessagesClearedEvent.cs" />
-    <Compile Include="Protocol\CSS\AddRuleCommand.cs" />
-    <Compile Include="Protocol\CSS\AddRuleCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\CreateStyleSheetCommand.cs" />
-    <Compile Include="Protocol\CSS\CreateStyleSheetCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\CSSComputedStyleProperty.cs" />
-    <Compile Include="Protocol\CSS\CSSMedia.cs" />
-    <Compile Include="Protocol\CSS\CSSProperty.cs" />
-    <Compile Include="Protocol\CSS\CSSRule.cs" />
-    <Compile Include="Protocol\CSS\CSSStyle.cs" />
-    <Compile Include="Protocol\CSS\CSSStyleSheetHeader.cs" />
-    <Compile Include="Protocol\CSS\DisableCommand.cs" />
-    <Compile Include="Protocol\CSS\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\EnableCommand.cs" />
-    <Compile Include="Protocol\CSS\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\ForcePseudoStateCommand.cs" />
-    <Compile Include="Protocol\CSS\ForcePseudoStateCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\GetComputedStyleForNodeCommand.cs" />
-    <Compile Include="Protocol\CSS\GetComputedStyleForNodeCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\GetInlineStylesForNodeCommand.cs" />
-    <Compile Include="Protocol\CSS\GetInlineStylesForNodeCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\GetMatchedStylesForNodeCommand.cs" />
-    <Compile Include="Protocol\CSS\GetMatchedStylesForNodeCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\GetMediaQueriesCommand.cs" />
-    <Compile Include="Protocol\CSS\GetMediaQueriesCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\GetPlatformFontsForNodeCommand.cs" />
-    <Compile Include="Protocol\CSS\GetPlatformFontsForNodeCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\GetStyleSheetTextCommand.cs" />
-    <Compile Include="Protocol\CSS\GetStyleSheetTextCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\InheritedStyleEntry.cs" />
-    <Compile Include="Protocol\CSS\MediaQuery.cs" />
-    <Compile Include="Protocol\CSS\MediaQueryExpression.cs" />
-    <Compile Include="Protocol\CSS\MediaQueryResultChangedEvent.cs" />
-    <Compile Include="Protocol\CSS\PlatformFontUsage.cs" />
-    <Compile Include="Protocol\CSS\PseudoIdMatches.cs" />
-    <Compile Include="Protocol\CSS\RuleMatch.cs" />
-    <Compile Include="Protocol\CSS\Selector.cs" />
-    <Compile Include="Protocol\CSS\SelectorList.cs" />
-    <Compile Include="Protocol\CSS\SetMediaTextCommand.cs" />
-    <Compile Include="Protocol\CSS\SetMediaTextCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\SetPropertyTextCommand.cs" />
-    <Compile Include="Protocol\CSS\SetPropertyTextCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\SetRuleSelectorCommand.cs" />
-    <Compile Include="Protocol\CSS\SetRuleSelectorCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\SetStyleSheetTextCommand.cs" />
-    <Compile Include="Protocol\CSS\SetStyleSheetTextCommandResponse.cs" />
-    <Compile Include="Protocol\CSS\ShorthandEntry.cs" />
-    <Compile Include="Protocol\CSS\SourceRange.cs" />
-    <Compile Include="Protocol\CSS\StyleSheetAddedEvent.cs" />
-    <Compile Include="Protocol\CSS\StyleSheetChangedEvent.cs" />
-    <Compile Include="Protocol\CSS\StyleSheetOrigin.cs" />
-    <Compile Include="Protocol\CSS\StyleSheetRemovedEvent.cs" />
-    <Compile Include="Protocol\Database\AddDatabaseEvent.cs" />
-    <Compile Include="Protocol\Database\Database.cs" />
-    <Compile Include="Protocol\Database\DisableCommand.cs" />
-    <Compile Include="Protocol\Database\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Database\EnableCommand.cs" />
-    <Compile Include="Protocol\Database\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Database\Error.cs" />
-    <Compile Include="Protocol\Database\ExecuteSQLCommand.cs" />
-    <Compile Include="Protocol\Database\ExecuteSQLCommandResponse.cs" />
-    <Compile Include="Protocol\Database\GetDatabaseTableNamesCommand.cs" />
-    <Compile Include="Protocol\Database\GetDatabaseTableNamesCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\AsyncOperation.cs" />
-    <Compile Include="Protocol\Debugger\AsyncOperationCompletedEvent.cs" />
-    <Compile Include="Protocol\Debugger\AsyncOperationStartedEvent.cs" />
-    <Compile Include="Protocol\Debugger\BreakpointResolvedEvent.cs" />
-    <Compile Include="Protocol\Debugger\CallFrame.cs" />
-    <Compile Include="Protocol\Debugger\CanSetScriptSourceCommand.cs" />
-    <Compile Include="Protocol\Debugger\CanSetScriptSourceCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\CollectionEntry.cs" />
-    <Compile Include="Protocol\Debugger\CompileScriptCommand.cs" />
-    <Compile Include="Protocol\Debugger\CompileScriptCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\ContinueToLocationCommand.cs" />
-    <Compile Include="Protocol\Debugger\ContinueToLocationCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\DisableCommand.cs" />
-    <Compile Include="Protocol\Debugger\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\DisablePromiseTrackerCommand.cs" />
-    <Compile Include="Protocol\Debugger\DisablePromiseTrackerCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\EnableCommand.cs" />
-    <Compile Include="Protocol\Debugger\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\EnablePromiseTrackerCommand.cs" />
-    <Compile Include="Protocol\Debugger\EnablePromiseTrackerCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\EvaluateOnCallFrameCommand.cs" />
-    <Compile Include="Protocol\Debugger\EvaluateOnCallFrameCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\ExceptionDetails.cs" />
-    <Compile Include="Protocol\Debugger\FlushAsyncOperationEventsCommand.cs" />
-    <Compile Include="Protocol\Debugger\FlushAsyncOperationEventsCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\FunctionDetails.cs" />
-    <Compile Include="Protocol\Debugger\GeneratorObjectDetails.cs" />
-    <Compile Include="Protocol\Debugger\GetBacktraceCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetBacktraceCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetCollectionEntriesCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetCollectionEntriesCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetFunctionDetailsCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetFunctionDetailsCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetGeneratorObjectDetailsCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetGeneratorObjectDetailsCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetPromiseByIdCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetPromiseByIdCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetPromisesCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetPromisesCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetScriptSourceCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetScriptSourceCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GetStepInPositionsCommand.cs" />
-    <Compile Include="Protocol\Debugger\GetStepInPositionsCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\GlobalObjectClearedEvent.cs" />
-    <Compile Include="Protocol\Debugger\Location.cs" />
-    <Compile Include="Protocol\Debugger\PauseCommand.cs" />
-    <Compile Include="Protocol\Debugger\PauseCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\PausedEvent.cs" />
-    <Compile Include="Protocol\Debugger\PromiseDetails.cs" />
-    <Compile Include="Protocol\Debugger\PromiseUpdatedEvent.cs" />
-    <Compile Include="Protocol\Debugger\RemoveAsyncOperationBreakpointCommand.cs" />
-    <Compile Include="Protocol\Debugger\RemoveAsyncOperationBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\RemoveBreakpointCommand.cs" />
-    <Compile Include="Protocol\Debugger\RemoveBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\RestartFrameCommand.cs" />
-    <Compile Include="Protocol\Debugger\RestartFrameCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\ResumeCommand.cs" />
-    <Compile Include="Protocol\Debugger\ResumeCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\ResumedEvent.cs" />
-    <Compile Include="Protocol\Debugger\RunScriptCommand.cs" />
-    <Compile Include="Protocol\Debugger\RunScriptCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\Scope.cs" />
-    <Compile Include="Protocol\Debugger\ScriptFailedToParseEvent.cs" />
-    <Compile Include="Protocol\Debugger\ScriptParsedEvent.cs" />
-    <Compile Include="Protocol\Debugger\SearchInContentCommand.cs" />
-    <Compile Include="Protocol\Debugger\SearchInContentCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SearchMatch.cs" />
-    <Compile Include="Protocol\Debugger\SetAsyncCallStackDepthCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetAsyncCallStackDepthCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetAsyncOperationBreakpointCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetAsyncOperationBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetBreakpointByUrlCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetBreakpointByUrlCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetBreakpointCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetBreakpointsActiveCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetBreakpointsActiveCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetPauseOnExceptionsCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetPauseOnExceptionsCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetScriptSourceCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetScriptSourceCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetScriptSourceError.cs" />
-    <Compile Include="Protocol\Debugger\SetSkipAllPausesCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetSkipAllPausesCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SetVariableValueCommand.cs" />
-    <Compile Include="Protocol\Debugger\SetVariableValueCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\SkipStackFramesCommand.cs" />
-    <Compile Include="Protocol\Debugger\SkipStackFramesCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\StackTrace.cs" />
-    <Compile Include="Protocol\Debugger\StepIntoAsyncCommand.cs" />
-    <Compile Include="Protocol\Debugger\StepIntoAsyncCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\StepIntoCommand.cs" />
-    <Compile Include="Protocol\Debugger\StepIntoCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\StepOutCommand.cs" />
-    <Compile Include="Protocol\Debugger\StepOutCommandResponse.cs" />
-    <Compile Include="Protocol\Debugger\StepOverCommand.cs" />
-    <Compile Include="Protocol\Debugger\StepOverCommandResponse.cs" />
-    <Compile Include="Protocol\DeviceOrientation\ClearDeviceOrientationOverrideCommand.cs" />
-    <Compile Include="Protocol\DeviceOrientation\ClearDeviceOrientationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\DeviceOrientation\SetDeviceOrientationOverrideCommand.cs" />
-    <Compile Include="Protocol\DeviceOrientation\SetDeviceOrientationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\DOMBreakpointType.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveDOMBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveDOMBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveEventListenerBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveEventListenerBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveInstrumentationBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveInstrumentationBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveXHRBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\RemoveXHRBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetDOMBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetDOMBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetEventListenerBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetEventListenerBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetInstrumentationBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetInstrumentationBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetXHRBreakpointCommand.cs" />
-    <Compile Include="Protocol\DOMDebugger\SetXHRBreakpointCommandResponse.cs" />
-    <Compile Include="Protocol\DOMStorage\DisableCommand.cs" />
-    <Compile Include="Protocol\DOMStorage\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\DOMStorage\DomStorageItemAddedEvent.cs" />
-    <Compile Include="Protocol\DOMStorage\DomStorageItemRemovedEvent.cs" />
-    <Compile Include="Protocol\DOMStorage\DomStorageItemsClearedEvent.cs" />
-    <Compile Include="Protocol\DOMStorage\DomStorageItemUpdatedEvent.cs" />
-    <Compile Include="Protocol\DOMStorage\EnableCommand.cs" />
-    <Compile Include="Protocol\DOMStorage\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\DOMStorage\GetDOMStorageItemsCommand.cs" />
-    <Compile Include="Protocol\DOMStorage\GetDOMStorageItemsCommandResponse.cs" />
-    <Compile Include="Protocol\DOMStorage\RemoveDOMStorageItemCommand.cs" />
-    <Compile Include="Protocol\DOMStorage\RemoveDOMStorageItemCommandResponse.cs" />
-    <Compile Include="Protocol\DOMStorage\SetDOMStorageItemCommand.cs" />
-    <Compile Include="Protocol\DOMStorage\SetDOMStorageItemCommandResponse.cs" />
-    <Compile Include="Protocol\DOMStorage\StorageId.cs" />
-    <Compile Include="Protocol\DOM\AttributeModifiedEvent.cs" />
-    <Compile Include="Protocol\DOM\AttributeRemovedEvent.cs" />
-    <Compile Include="Protocol\DOM\BackendNode.cs" />
-    <Compile Include="Protocol\DOM\BoxModel.cs" />
-    <Compile Include="Protocol\DOM\CharacterDataModifiedEvent.cs" />
-    <Compile Include="Protocol\DOM\ChildNodeCountUpdatedEvent.cs" />
-    <Compile Include="Protocol\DOM\ChildNodeInsertedEvent.cs" />
-    <Compile Include="Protocol\DOM\ChildNodeRemovedEvent.cs" />
-    <Compile Include="Protocol\DOM\CopyToCommand.cs" />
-    <Compile Include="Protocol\DOM\CopyToCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\DisableCommand.cs" />
-    <Compile Include="Protocol\DOM\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\DiscardSearchResultsCommand.cs" />
-    <Compile Include="Protocol\DOM\DiscardSearchResultsCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\DistributedNodesUpdatedEvent.cs" />
-    <Compile Include="Protocol\DOM\DocumentUpdatedEvent.cs" />
-    <Compile Include="Protocol\DOM\EnableCommand.cs" />
-    <Compile Include="Protocol\DOM\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\EventListener.cs" />
-    <Compile Include="Protocol\DOM\FocusCommand.cs" />
-    <Compile Include="Protocol\DOM\FocusCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetAttributesCommand.cs" />
-    <Compile Include="Protocol\DOM\GetAttributesCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetBoxModelCommand.cs" />
-    <Compile Include="Protocol\DOM\GetBoxModelCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetDocumentCommand.cs" />
-    <Compile Include="Protocol\DOM\GetDocumentCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetEventListenersForNodeCommand.cs" />
-    <Compile Include="Protocol\DOM\GetEventListenersForNodeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetHighlightObjectForTestCommand.cs" />
-    <Compile Include="Protocol\DOM\GetHighlightObjectForTestCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetNodeForLocationCommand.cs" />
-    <Compile Include="Protocol\DOM\GetNodeForLocationCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetOuterHTMLCommand.cs" />
-    <Compile Include="Protocol\DOM\GetOuterHTMLCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetRelayoutBoundaryCommand.cs" />
-    <Compile Include="Protocol\DOM\GetRelayoutBoundaryCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\GetSearchResultsCommand.cs" />
-    <Compile Include="Protocol\DOM\GetSearchResultsCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\HideHighlightCommand.cs" />
-    <Compile Include="Protocol\DOM\HideHighlightCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\HighlightConfig.cs" />
-    <Compile Include="Protocol\DOM\HighlightFrameCommand.cs" />
-    <Compile Include="Protocol\DOM\HighlightFrameCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\HighlightNodeCommand.cs" />
-    <Compile Include="Protocol\DOM\HighlightNodeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\HighlightQuadCommand.cs" />
-    <Compile Include="Protocol\DOM\HighlightQuadCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\HighlightRectCommand.cs" />
-    <Compile Include="Protocol\DOM\HighlightRectCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\InlineStyleInvalidatedEvent.cs" />
-    <Compile Include="Protocol\DOM\InspectNodeRequestedEvent.cs" />
-    <Compile Include="Protocol\DOM\MarkUndoableStateCommand.cs" />
-    <Compile Include="Protocol\DOM\MarkUndoableStateCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\MoveToCommand.cs" />
-    <Compile Include="Protocol\DOM\MoveToCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\Node.cs" />
-    <Compile Include="Protocol\DOM\PerformSearchCommand.cs" />
-    <Compile Include="Protocol\DOM\PerformSearchCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\PseudoElementAddedEvent.cs" />
-    <Compile Include="Protocol\DOM\PseudoElementRemovedEvent.cs" />
-    <Compile Include="Protocol\DOM\PseudoType.cs" />
-    <Compile Include="Protocol\DOM\PushNodeByPathToFrontendCommand.cs" />
-    <Compile Include="Protocol\DOM\PushNodeByPathToFrontendCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\PushNodesByBackendIdsToFrontendCommand.cs" />
-    <Compile Include="Protocol\DOM\PushNodesByBackendIdsToFrontendCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\QuerySelectorAllCommand.cs" />
-    <Compile Include="Protocol\DOM\QuerySelectorAllCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\QuerySelectorCommand.cs" />
-    <Compile Include="Protocol\DOM\QuerySelectorCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\Rect.cs" />
-    <Compile Include="Protocol\DOM\RedoCommand.cs" />
-    <Compile Include="Protocol\DOM\RedoCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\RemoveAttributeCommand.cs" />
-    <Compile Include="Protocol\DOM\RemoveAttributeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\RemoveNodeCommand.cs" />
-    <Compile Include="Protocol\DOM\RemoveNodeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\RequestChildNodesCommand.cs" />
-    <Compile Include="Protocol\DOM\RequestChildNodesCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\RequestNodeCommand.cs" />
-    <Compile Include="Protocol\DOM\RequestNodeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\ResolveNodeCommand.cs" />
-    <Compile Include="Protocol\DOM\ResolveNodeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\RGBA.cs" />
-    <Compile Include="Protocol\DOM\SetAttributesAsTextCommand.cs" />
-    <Compile Include="Protocol\DOM\SetAttributesAsTextCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetAttributeValueCommand.cs" />
-    <Compile Include="Protocol\DOM\SetAttributeValueCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetChildNodesEvent.cs" />
-    <Compile Include="Protocol\DOM\SetFileInputFilesCommand.cs" />
-    <Compile Include="Protocol\DOM\SetFileInputFilesCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetInspectedNodeCommand.cs" />
-    <Compile Include="Protocol\DOM\SetInspectedNodeCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetInspectModeEnabledCommand.cs" />
-    <Compile Include="Protocol\DOM\SetInspectModeEnabledCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetNodeNameCommand.cs" />
-    <Compile Include="Protocol\DOM\SetNodeNameCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetNodeValueCommand.cs" />
-    <Compile Include="Protocol\DOM\SetNodeValueCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\SetOuterHTMLCommand.cs" />
-    <Compile Include="Protocol\DOM\SetOuterHTMLCommandResponse.cs" />
-    <Compile Include="Protocol\DOM\ShadowRootPoppedEvent.cs" />
-    <Compile Include="Protocol\DOM\ShadowRootPushedEvent.cs" />
-    <Compile Include="Protocol\DOM\ShadowRootType.cs" />
-    <Compile Include="Protocol\DOM\ShapeOutsideInfo.cs" />
-    <Compile Include="Protocol\DOM\UndoCommand.cs" />
-    <Compile Include="Protocol\DOM\UndoCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\CanEmulateCommand.cs" />
-    <Compile Include="Protocol\Emulation\CanEmulateCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\ClearDeviceMetricsOverrideCommand.cs" />
-    <Compile Include="Protocol\Emulation\ClearDeviceMetricsOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\ClearGeolocationOverrideCommand.cs" />
-    <Compile Include="Protocol\Emulation\ClearGeolocationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\ResetScrollAndPageScaleFactorCommand.cs" />
-    <Compile Include="Protocol\Emulation\ResetScrollAndPageScaleFactorCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\SetDeviceMetricsOverrideCommand.cs" />
-    <Compile Include="Protocol\Emulation\SetDeviceMetricsOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\SetEmulatedMediaCommand.cs" />
-    <Compile Include="Protocol\Emulation\SetEmulatedMediaCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\SetGeolocationOverrideCommand.cs" />
-    <Compile Include="Protocol\Emulation\SetGeolocationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\SetPageScaleFactorCommand.cs" />
-    <Compile Include="Protocol\Emulation\SetPageScaleFactorCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\SetScriptExecutionDisabledCommand.cs" />
-    <Compile Include="Protocol\Emulation\SetScriptExecutionDisabledCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\SetTouchEmulationEnabledCommand.cs" />
-    <Compile Include="Protocol\Emulation\SetTouchEmulationEnabledCommandResponse.cs" />
-    <Compile Include="Protocol\Emulation\Viewport.cs" />
-    <Compile Include="Protocol\Emulation\ViewportChangedEvent.cs" />
-    <Compile Include="Protocol\FileSystem\DeleteEntryCommand.cs" />
-    <Compile Include="Protocol\FileSystem\DeleteEntryCommandResponse.cs" />
-    <Compile Include="Protocol\FileSystem\DisableCommand.cs" />
-    <Compile Include="Protocol\FileSystem\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\FileSystem\EnableCommand.cs" />
-    <Compile Include="Protocol\FileSystem\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\FileSystem\Entry.cs" />
-    <Compile Include="Protocol\FileSystem\Metadata.cs" />
-    <Compile Include="Protocol\FileSystem\RequestDirectoryContentCommand.cs" />
-    <Compile Include="Protocol\FileSystem\RequestDirectoryContentCommandResponse.cs" />
-    <Compile Include="Protocol\FileSystem\RequestFileContentCommand.cs" />
-    <Compile Include="Protocol\FileSystem\RequestFileContentCommandResponse.cs" />
-    <Compile Include="Protocol\FileSystem\RequestFileSystemRootCommand.cs" />
-    <Compile Include="Protocol\FileSystem\RequestFileSystemRootCommandResponse.cs" />
-    <Compile Include="Protocol\FileSystem\RequestMetadataCommand.cs" />
-    <Compile Include="Protocol\FileSystem\RequestMetadataCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\AddHeapSnapshotChunkEvent.cs" />
-    <Compile Include="Protocol\HeapProfiler\AddInspectedHeapObjectCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\AddInspectedHeapObjectCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\CollectGarbageCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\CollectGarbageCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\DisableCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\EnableCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\GetHeapObjectIdCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\GetHeapObjectIdCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\GetObjectByHeapObjectIdCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\GetObjectByHeapObjectIdCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\HeapStatsUpdateEvent.cs" />
-    <Compile Include="Protocol\HeapProfiler\LastSeenObjectIdEvent.cs" />
-    <Compile Include="Protocol\HeapProfiler\ReportHeapSnapshotProgressEvent.cs" />
-    <Compile Include="Protocol\HeapProfiler\ResetProfilesEvent.cs" />
-    <Compile Include="Protocol\HeapProfiler\StartTrackingHeapObjectsCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\StartTrackingHeapObjectsCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\StopTrackingHeapObjectsCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\StopTrackingHeapObjectsCommandResponse.cs" />
-    <Compile Include="Protocol\HeapProfiler\TakeHeapSnapshotCommand.cs" />
-    <Compile Include="Protocol\HeapProfiler\TakeHeapSnapshotCommandResponse.cs" />
-    <Compile Include="Protocol\IndexedDB\ClearObjectStoreCommand.cs" />
-    <Compile Include="Protocol\IndexedDB\ClearObjectStoreCommandResponse.cs" />
-    <Compile Include="Protocol\IndexedDB\DatabaseWithObjectStores.cs" />
-    <Compile Include="Protocol\IndexedDB\DataEntry.cs" />
-    <Compile Include="Protocol\IndexedDB\DisableCommand.cs" />
-    <Compile Include="Protocol\IndexedDB\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\IndexedDB\EnableCommand.cs" />
-    <Compile Include="Protocol\IndexedDB\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\IndexedDB\Key.cs" />
-    <Compile Include="Protocol\IndexedDB\KeyPath.cs" />
-    <Compile Include="Protocol\IndexedDB\KeyRange.cs" />
-    <Compile Include="Protocol\IndexedDB\ObjectStore.cs" />
-    <Compile Include="Protocol\IndexedDB\ObjectStoreIndex.cs" />
-    <Compile Include="Protocol\IndexedDB\RequestDatabaseCommand.cs" />
-    <Compile Include="Protocol\IndexedDB\RequestDatabaseCommandResponse.cs" />
-    <Compile Include="Protocol\IndexedDB\RequestDatabaseNamesCommand.cs" />
-    <Compile Include="Protocol\IndexedDB\RequestDatabaseNamesCommandResponse.cs" />
-    <Compile Include="Protocol\IndexedDB\RequestDataCommand.cs" />
-    <Compile Include="Protocol\IndexedDB\RequestDataCommandResponse.cs" />
-    <Compile Include="Protocol\Input\DispatchKeyEventCommand.cs" />
-    <Compile Include="Protocol\Input\DispatchKeyEventCommandResponse.cs" />
-    <Compile Include="Protocol\Input\DispatchMouseEventCommand.cs" />
-    <Compile Include="Protocol\Input\DispatchMouseEventCommandResponse.cs" />
-    <Compile Include="Protocol\Input\DispatchTouchEventCommand.cs" />
-    <Compile Include="Protocol\Input\DispatchTouchEventCommandResponse.cs" />
-    <Compile Include="Protocol\Input\EmulateTouchFromMouseEventCommand.cs" />
-    <Compile Include="Protocol\Input\EmulateTouchFromMouseEventCommandResponse.cs" />
-    <Compile Include="Protocol\Input\GestureSourceType.cs" />
-    <Compile Include="Protocol\Input\SynthesizePinchGestureCommand.cs" />
-    <Compile Include="Protocol\Input\SynthesizePinchGestureCommandResponse.cs" />
-    <Compile Include="Protocol\Input\SynthesizeScrollGestureCommand.cs" />
-    <Compile Include="Protocol\Input\SynthesizeScrollGestureCommandResponse.cs" />
-    <Compile Include="Protocol\Input\SynthesizeTapGestureCommand.cs" />
-    <Compile Include="Protocol\Input\SynthesizeTapGestureCommandResponse.cs" />
-    <Compile Include="Protocol\Input\TouchPoint.cs" />
-    <Compile Include="Protocol\Inspector\DetachedEvent.cs" />
-    <Compile Include="Protocol\Inspector\DisableCommand.cs" />
-    <Compile Include="Protocol\Inspector\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Inspector\EnableCommand.cs" />
-    <Compile Include="Protocol\Inspector\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Inspector\EvaluateForTestInFrontendEvent.cs" />
-    <Compile Include="Protocol\Inspector\InspectEvent.cs" />
-    <Compile Include="Protocol\Inspector\TargetCrashedEvent.cs" />
-    <Compile Include="Protocol\LayerTree\CompositingReasonsCommand.cs" />
-    <Compile Include="Protocol\LayerTree\CompositingReasonsCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\DisableCommand.cs" />
-    <Compile Include="Protocol\LayerTree\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\EnableCommand.cs" />
-    <Compile Include="Protocol\LayerTree\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\Layer.cs" />
-    <Compile Include="Protocol\LayerTree\LayerPaintedEvent.cs" />
-    <Compile Include="Protocol\LayerTree\LayerTreeDidChangeEvent.cs" />
-    <Compile Include="Protocol\LayerTree\LoadSnapshotCommand.cs" />
-    <Compile Include="Protocol\LayerTree\LoadSnapshotCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\MakeSnapshotCommand.cs" />
-    <Compile Include="Protocol\LayerTree\MakeSnapshotCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\PictureTile.cs" />
-    <Compile Include="Protocol\LayerTree\ProfileSnapshotCommand.cs" />
-    <Compile Include="Protocol\LayerTree\ProfileSnapshotCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\ReleaseSnapshotCommand.cs" />
-    <Compile Include="Protocol\LayerTree\ReleaseSnapshotCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\ReplaySnapshotCommand.cs" />
-    <Compile Include="Protocol\LayerTree\ReplaySnapshotCommandResponse.cs" />
-    <Compile Include="Protocol\LayerTree\ScrollRect.cs" />
-    <Compile Include="Protocol\LayerTree\SnapshotCommandLogCommand.cs" />
-    <Compile Include="Protocol\LayerTree\SnapshotCommandLogCommandResponse.cs" />
-    <Compile Include="Protocol\Memory\GetDOMCountersCommand.cs" />
-    <Compile Include="Protocol\Memory\GetDOMCountersCommandResponse.cs" />
-    <Compile Include="Protocol\Network\CachedResource.cs" />
-    <Compile Include="Protocol\Network\CanClearBrowserCacheCommand.cs" />
-    <Compile Include="Protocol\Network\CanClearBrowserCacheCommandResponse.cs" />
-    <Compile Include="Protocol\Network\CanClearBrowserCookiesCommand.cs" />
-    <Compile Include="Protocol\Network\CanClearBrowserCookiesCommandResponse.cs" />
-    <Compile Include="Protocol\Network\CanEmulateNetworkConditionsCommand.cs" />
-    <Compile Include="Protocol\Network\CanEmulateNetworkConditionsCommandResponse.cs" />
-    <Compile Include="Protocol\Network\ClearBrowserCacheCommand.cs" />
-    <Compile Include="Protocol\Network\ClearBrowserCacheCommandResponse.cs" />
-    <Compile Include="Protocol\Network\ClearBrowserCookiesCommand.cs" />
-    <Compile Include="Protocol\Network\ClearBrowserCookiesCommandResponse.cs" />
-    <Compile Include="Protocol\Network\Cookie.cs" />
-    <Compile Include="Protocol\Network\DataReceivedEvent.cs" />
-    <Compile Include="Protocol\Network\DeleteCookieCommand.cs" />
-    <Compile Include="Protocol\Network\DeleteCookieCommandResponse.cs" />
-    <Compile Include="Protocol\Network\DisableCommand.cs" />
-    <Compile Include="Protocol\Network\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Network\EmulateNetworkConditionsCommand.cs" />
-    <Compile Include="Protocol\Network\EmulateNetworkConditionsCommandResponse.cs" />
-    <Compile Include="Protocol\Network\EnableCommand.cs" />
-    <Compile Include="Protocol\Network\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Network\EventSourceMessageReceivedEvent.cs" />
-    <Compile Include="Protocol\Network\GetCookiesCommand.cs" />
-    <Compile Include="Protocol\Network\GetCookiesCommandResponse.cs" />
-    <Compile Include="Protocol\Network\GetResponseBodyCommand.cs" />
-    <Compile Include="Protocol\Network\GetResponseBodyCommandResponse.cs" />
-    <Compile Include="Protocol\Network\Initiator.cs" />
-    <Compile Include="Protocol\Network\LoadingFailedEvent.cs" />
-    <Compile Include="Protocol\Network\LoadingFinishedEvent.cs" />
-    <Compile Include="Protocol\Network\ReplayXHRCommand.cs" />
-    <Compile Include="Protocol\Network\ReplayXHRCommandResponse.cs" />
-    <Compile Include="Protocol\Network\Request.cs" />
-    <Compile Include="Protocol\Network\RequestServedFromCacheEvent.cs" />
-    <Compile Include="Protocol\Network\RequestWillBeSentEvent.cs" />
-    <Compile Include="Protocol\Network\ResourceTiming.cs" />
-    <Compile Include="Protocol\Network\Response.cs" />
-    <Compile Include="Protocol\Network\ResponseReceivedEvent.cs" />
-    <Compile Include="Protocol\Network\SetCacheDisabledCommand.cs" />
-    <Compile Include="Protocol\Network\SetCacheDisabledCommandResponse.cs" />
-    <Compile Include="Protocol\Network\SetDataSizeLimitsForTestCommand.cs" />
-    <Compile Include="Protocol\Network\SetDataSizeLimitsForTestCommandResponse.cs" />
-    <Compile Include="Protocol\Network\SetExtraHTTPHeadersCommand.cs" />
-    <Compile Include="Protocol\Network\SetExtraHTTPHeadersCommandResponse.cs" />
-    <Compile Include="Protocol\Network\SetMonitoringXHREnabledCommand.cs" />
-    <Compile Include="Protocol\Network\SetMonitoringXHREnabledCommandResponse.cs" />
-    <Compile Include="Protocol\Network\SetUserAgentOverrideCommand.cs" />
-    <Compile Include="Protocol\Network\SetUserAgentOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Network\WebSocketClosedEvent.cs" />
-    <Compile Include="Protocol\Network\WebSocketCreatedEvent.cs" />
-    <Compile Include="Protocol\Network\WebSocketFrame.cs" />
-    <Compile Include="Protocol\Network\WebSocketFrameErrorEvent.cs" />
-    <Compile Include="Protocol\Network\WebSocketFrameReceivedEvent.cs" />
-    <Compile Include="Protocol\Network\WebSocketFrameSentEvent.cs" />
-    <Compile Include="Protocol\Network\WebSocketHandshakeResponseReceivedEvent.cs" />
-    <Compile Include="Protocol\Network\WebSocketRequest.cs" />
-    <Compile Include="Protocol\Network\WebSocketResponse.cs" />
-    <Compile Include="Protocol\Network\WebSocketWillSendHandshakeRequestEvent.cs" />
-    <Compile Include="Protocol\Page\AddScriptToEvaluateOnLoadCommand.cs" />
-    <Compile Include="Protocol\Page\AddScriptToEvaluateOnLoadCommandResponse.cs" />
-    <Compile Include="Protocol\Page\CanScreencastCommand.cs" />
-    <Compile Include="Protocol\Page\CanScreencastCommandResponse.cs" />
-    <Compile Include="Protocol\Page\CaptureScreenshotCommand.cs" />
-    <Compile Include="Protocol\Page\CaptureScreenshotCommandResponse.cs" />
-    <Compile Include="Protocol\Page\ClearDeviceMetricsOverrideCommand.cs" />
-    <Compile Include="Protocol\Page\ClearDeviceMetricsOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Page\ClearDeviceOrientationOverrideCommand.cs" />
-    <Compile Include="Protocol\Page\ClearDeviceOrientationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Page\ClearGeolocationOverrideCommand.cs" />
-    <Compile Include="Protocol\Page\ClearGeolocationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Page\ColorPickedEvent.cs" />
-    <Compile Include="Protocol\Page\DeleteCookieCommand.cs" />
-    <Compile Include="Protocol\Page\DeleteCookieCommandResponse.cs" />
-    <Compile Include="Protocol\Page\DisableCommand.cs" />
-    <Compile Include="Protocol\Page\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Page\DomContentEventFiredEvent.cs" />
-    <Compile Include="Protocol\Page\EnableCommand.cs" />
-    <Compile Include="Protocol\Page\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Page\Frame.cs" />
-    <Compile Include="Protocol\Page\FrameAttachedEvent.cs" />
-    <Compile Include="Protocol\Page\FrameClearedScheduledNavigationEvent.cs" />
-    <Compile Include="Protocol\Page\FrameDetachedEvent.cs" />
-    <Compile Include="Protocol\Page\FrameNavigatedEvent.cs" />
-    <Compile Include="Protocol\Page\FrameResizedEvent.cs" />
-    <Compile Include="Protocol\Page\FrameResourceTree.cs" />
-    <Compile Include="Protocol\Page\FrameScheduledNavigationEvent.cs" />
-    <Compile Include="Protocol\Page\FrameStartedLoadingEvent.cs" />
-    <Compile Include="Protocol\Page\FrameStoppedLoadingEvent.cs" />
-    <Compile Include="Protocol\Page\GetCookiesCommand.cs" />
-    <Compile Include="Protocol\Page\GetCookiesCommandResponse.cs" />
-    <Compile Include="Protocol\Page\GetNavigationHistoryCommand.cs" />
-    <Compile Include="Protocol\Page\GetNavigationHistoryCommandResponse.cs" />
-    <Compile Include="Protocol\Page\GetResourceContentCommand.cs" />
-    <Compile Include="Protocol\Page\GetResourceContentCommandResponse.cs" />
-    <Compile Include="Protocol\Page\GetResourceTreeCommand.cs" />
-    <Compile Include="Protocol\Page\GetResourceTreeCommandResponse.cs" />
-    <Compile Include="Protocol\Page\HandleJavaScriptDialogCommand.cs" />
-    <Compile Include="Protocol\Page\HandleJavaScriptDialogCommandResponse.cs" />
-    <Compile Include="Protocol\Page\InterstitialHiddenEvent.cs" />
-    <Compile Include="Protocol\Page\InterstitialShownEvent.cs" />
-    <Compile Include="Protocol\Page\JavascriptDialogClosedEvent.cs" />
-    <Compile Include="Protocol\Page\JavascriptDialogOpeningEvent.cs" />
-    <Compile Include="Protocol\Page\LoadEventFiredEvent.cs" />
-    <Compile Include="Protocol\Page\NavigateCommand.cs" />
-    <Compile Include="Protocol\Page\NavigateCommandResponse.cs" />
-    <Compile Include="Protocol\Page\NavigateToHistoryEntryCommand.cs" />
-    <Compile Include="Protocol\Page\NavigateToHistoryEntryCommandResponse.cs" />
-    <Compile Include="Protocol\Page\NavigationEntry.cs" />
-    <Compile Include="Protocol\Page\ReloadCommand.cs" />
-    <Compile Include="Protocol\Page\ReloadCommandResponse.cs" />
-    <Compile Include="Protocol\Page\RemoveScriptToEvaluateOnLoadCommand.cs" />
-    <Compile Include="Protocol\Page\RemoveScriptToEvaluateOnLoadCommandResponse.cs" />
-    <Compile Include="Protocol\Page\ResourceType.cs" />
-    <Compile Include="Protocol\Page\ScreencastFrameAckCommand.cs" />
-    <Compile Include="Protocol\Page\ScreencastFrameAckCommandResponse.cs" />
-    <Compile Include="Protocol\Page\ScreencastFrameEvent.cs" />
-    <Compile Include="Protocol\Page\ScreencastFrameMetadata.cs" />
-    <Compile Include="Protocol\Page\ScreencastVisibilityChangedEvent.cs" />
-    <Compile Include="Protocol\Page\SearchInResourceCommand.cs" />
-    <Compile Include="Protocol\Page\SearchInResourceCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetColorPickerEnabledCommand.cs" />
-    <Compile Include="Protocol\Page\SetColorPickerEnabledCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetDeviceMetricsOverrideCommand.cs" />
-    <Compile Include="Protocol\Page\SetDeviceMetricsOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetDeviceOrientationOverrideCommand.cs" />
-    <Compile Include="Protocol\Page\SetDeviceOrientationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetDocumentContentCommand.cs" />
-    <Compile Include="Protocol\Page\SetDocumentContentCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetGeolocationOverrideCommand.cs" />
-    <Compile Include="Protocol\Page\SetGeolocationOverrideCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetOverlayMessageCommand.cs" />
-    <Compile Include="Protocol\Page\SetOverlayMessageCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetShowViewportSizeOnResizeCommand.cs" />
-    <Compile Include="Protocol\Page\SetShowViewportSizeOnResizeCommandResponse.cs" />
-    <Compile Include="Protocol\Page\SetTouchEmulationEnabledCommand.cs" />
-    <Compile Include="Protocol\Page\SetTouchEmulationEnabledCommandResponse.cs" />
-    <Compile Include="Protocol\Page\StartScreencastCommand.cs" />
-    <Compile Include="Protocol\Page\StartScreencastCommandResponse.cs" />
-    <Compile Include="Protocol\Page\StopScreencastCommand.cs" />
-    <Compile Include="Protocol\Page\StopScreencastCommandResponse.cs" />
-    <Compile Include="Protocol\Power\CanProfilePowerCommand.cs" />
-    <Compile Include="Protocol\Power\CanProfilePowerCommandResponse.cs" />
-    <Compile Include="Protocol\Power\DataAvailableEvent.cs" />
-    <Compile Include="Protocol\Power\EndCommand.cs" />
-    <Compile Include="Protocol\Power\EndCommandResponse.cs" />
-    <Compile Include="Protocol\Power\GetAccuracyLevelCommand.cs" />
-    <Compile Include="Protocol\Power\GetAccuracyLevelCommandResponse.cs" />
-    <Compile Include="Protocol\Power\PowerEvent.cs" />
-    <Compile Include="Protocol\Power\StartCommand.cs" />
-    <Compile Include="Protocol\Power\StartCommandResponse.cs" />
-    <Compile Include="Protocol\Profiler\ConsoleProfileFinishedEvent.cs" />
-    <Compile Include="Protocol\Profiler\ConsoleProfileStartedEvent.cs" />
-    <Compile Include="Protocol\Profiler\CPUProfile.cs" />
-    <Compile Include="Protocol\Profiler\CPUProfileNode.cs" />
-    <Compile Include="Protocol\Profiler\DisableCommand.cs" />
-    <Compile Include="Protocol\Profiler\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Profiler\EnableCommand.cs" />
-    <Compile Include="Protocol\Profiler\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Profiler\PositionTickInfo.cs" />
-    <Compile Include="Protocol\Profiler\SetSamplingIntervalCommand.cs" />
-    <Compile Include="Protocol\Profiler\SetSamplingIntervalCommandResponse.cs" />
-    <Compile Include="Protocol\Profiler\StartCommand.cs" />
-    <Compile Include="Protocol\Profiler\StartCommandResponse.cs" />
-    <Compile Include="Protocol\Profiler\StopCommand.cs" />
-    <Compile Include="Protocol\Profiler\StopCommandResponse.cs" />
-    <Compile Include="Protocol\ProtocolName.cs" />
-    <Compile Include="Protocol\Rendering\SetContinuousPaintingEnabledCommand.cs" />
-    <Compile Include="Protocol\Rendering\SetContinuousPaintingEnabledCommandResponse.cs" />
-    <Compile Include="Protocol\Rendering\SetShowDebugBordersCommand.cs" />
-    <Compile Include="Protocol\Rendering\SetShowDebugBordersCommandResponse.cs" />
-    <Compile Include="Protocol\Rendering\SetShowFPSCounterCommand.cs" />
-    <Compile Include="Protocol\Rendering\SetShowFPSCounterCommandResponse.cs" />
-    <Compile Include="Protocol\Rendering\SetShowPaintRectsCommand.cs" />
-    <Compile Include="Protocol\Rendering\SetShowPaintRectsCommandResponse.cs" />
-    <Compile Include="Protocol\Rendering\SetShowScrollBottleneckRectsCommand.cs" />
-    <Compile Include="Protocol\Rendering\SetShowScrollBottleneckRectsCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\CallArgument.cs" />
-    <Compile Include="Protocol\Runtime\CallFunctionOnCommand.cs" />
-    <Compile Include="Protocol\Runtime\CallFunctionOnCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\CustomPreview.cs" />
-    <Compile Include="Protocol\Runtime\DisableCommand.cs" />
-    <Compile Include="Protocol\Runtime\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\EnableCommand.cs" />
-    <Compile Include="Protocol\Runtime\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\EntryPreview.cs" />
-    <Compile Include="Protocol\Runtime\EvaluateCommand.cs" />
-    <Compile Include="Protocol\Runtime\EvaluateCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\EventListener.cs" />
-    <Compile Include="Protocol\Runtime\ExecutionContextCreatedEvent.cs" />
-    <Compile Include="Protocol\Runtime\ExecutionContextDescription.cs" />
-    <Compile Include="Protocol\Runtime\ExecutionContextDestroyedEvent.cs" />
-    <Compile Include="Protocol\Runtime\ExecutionContextsClearedEvent.cs" />
-    <Compile Include="Protocol\Runtime\GetEventListenersCommand.cs" />
-    <Compile Include="Protocol\Runtime\GetEventListenersCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\GetPropertiesCommand.cs" />
-    <Compile Include="Protocol\Runtime\GetPropertiesCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\InternalPropertyDescriptor.cs" />
-    <Compile Include="Protocol\Runtime\IsRunRequiredCommand.cs" />
-    <Compile Include="Protocol\Runtime\IsRunRequiredCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\ObjectPreview.cs" />
-    <Compile Include="Protocol\Runtime\PropertyDescriptor.cs" />
-    <Compile Include="Protocol\Runtime\PropertyPreview.cs" />
-    <Compile Include="Protocol\Runtime\ReleaseObjectCommand.cs" />
-    <Compile Include="Protocol\Runtime\ReleaseObjectCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\ReleaseObjectGroupCommand.cs" />
-    <Compile Include="Protocol\Runtime\ReleaseObjectGroupCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\RemoteObject.cs" />
-    <Compile Include="Protocol\Runtime\RunCommand.cs" />
-    <Compile Include="Protocol\Runtime\RunCommandResponse.cs" />
-    <Compile Include="Protocol\Runtime\SetCustomObjectFormatterEnabledCommand.cs" />
-    <Compile Include="Protocol\Runtime\SetCustomObjectFormatterEnabledCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\DebugOnStartUpdatedEvent.cs" />
-    <Compile Include="Protocol\ServiceWorker\DeliverPushMessageCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\DeliverPushMessageCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\DisableCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\DispatchMessageEvent.cs" />
-    <Compile Include="Protocol\ServiceWorker\EnableCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\InspectWorkerCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\InspectWorkerCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\SendMessageCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\SendMessageCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\ServiceWorkerErrorMessage.cs" />
-    <Compile Include="Protocol\ServiceWorker\ServiceWorkerRegistration.cs" />
-    <Compile Include="Protocol\ServiceWorker\ServiceWorkerVersion.cs" />
-    <Compile Include="Protocol\ServiceWorker\ServiceWorkerVersionRunningStatus.cs" />
-    <Compile Include="Protocol\ServiceWorker\ServiceWorkerVersionStatus.cs" />
-    <Compile Include="Protocol\ServiceWorker\SetDebugOnStartCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\SetDebugOnStartCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\StartWorkerCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\StartWorkerCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\StopCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\StopCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\StopWorkerCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\StopWorkerCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\UnregisterCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\UnregisterCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\UpdateRegistrationCommand.cs" />
-    <Compile Include="Protocol\ServiceWorker\UpdateRegistrationCommandResponse.cs" />
-    <Compile Include="Protocol\ServiceWorker\WorkerCreatedEvent.cs" />
-    <Compile Include="Protocol\ServiceWorker\WorkerErrorReportedEvent.cs" />
-    <Compile Include="Protocol\ServiceWorker\WorkerRegistrationUpdatedEvent.cs" />
-    <Compile Include="Protocol\ServiceWorker\WorkerTerminatedEvent.cs" />
-    <Compile Include="Protocol\ServiceWorker\WorkerVersionUpdatedEvent.cs" />
-    <Compile Include="Protocol\Timeline\DisableCommand.cs" />
-    <Compile Include="Protocol\Timeline\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Timeline\EnableCommand.cs" />
-    <Compile Include="Protocol\Timeline\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Timeline\EventRecordedEvent.cs" />
-    <Compile Include="Protocol\Timeline\StartCommand.cs" />
-    <Compile Include="Protocol\Timeline\StartCommandResponse.cs" />
-    <Compile Include="Protocol\Timeline\StopCommand.cs" />
-    <Compile Include="Protocol\Timeline\StopCommandResponse.cs" />
-    <Compile Include="Protocol\Timeline\TimelineEvent.cs" />
-    <Compile Include="Protocol\Tracing\BufferUsageEvent.cs" />
-    <Compile Include="Protocol\Tracing\DataCollectedEvent.cs" />
-    <Compile Include="Protocol\Tracing\EndCommand.cs" />
-    <Compile Include="Protocol\Tracing\EndCommandResponse.cs" />
-    <Compile Include="Protocol\Tracing\GetCategoriesCommand.cs" />
-    <Compile Include="Protocol\Tracing\GetCategoriesCommandResponse.cs" />
-    <Compile Include="Protocol\Tracing\StartCommand.cs" />
-    <Compile Include="Protocol\Tracing\StartCommandResponse.cs" />
-    <Compile Include="Protocol\Tracing\TracingCompleteEvent.cs" />
-    <Compile Include="Protocol\Worker\ConnectToWorkerCommand.cs" />
-    <Compile Include="Protocol\Worker\ConnectToWorkerCommandResponse.cs" />
-    <Compile Include="Protocol\Worker\DisableCommand.cs" />
-    <Compile Include="Protocol\Worker\DisableCommandResponse.cs" />
-    <Compile Include="Protocol\Worker\DisconnectFromWorkerCommand.cs" />
-    <Compile Include="Protocol\Worker\DisconnectFromWorkerCommandResponse.cs" />
-    <Compile Include="Protocol\Worker\DispatchMessageFromWorkerEvent.cs" />
-    <Compile Include="Protocol\Worker\EnableCommand.cs" />
-    <Compile Include="Protocol\Worker\EnableCommandResponse.cs" />
-    <Compile Include="Protocol\Worker\SendMessageToWorkerCommand.cs" />
-    <Compile Include="Protocol\Worker\SendMessageToWorkerCommandResponse.cs" />
-    <Compile Include="Protocol\Worker\SetAutoconnectToWorkersCommand.cs" />
-    <Compile Include="Protocol\Worker\SetAutoconnectToWorkersCommandResponse.cs" />
-    <Compile Include="Protocol\Worker\WorkerCreatedEvent.cs" />
-    <Compile Include="Protocol\Worker\WorkerTerminatedEvent.cs" />
+    <Compile Include="Protocol\**\*.cs" />
     <Compile Include="Serialization\MessageContractResolver.cs" />
     <Compile Include="SupportedByAttribute.cs" />
   </ItemGroup>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXGlobalStates.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXGlobalStates.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Accessibility/AXGlobalStates.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXGlobalStates.cs
index be36b31..5d77a14 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXGlobalStates.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXGlobalStates.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// States which apply to every AX node.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXLiveRegionAttributes.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXLiveRegionAttributes.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Accessibility/AXLiveRegionAttributes.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXLiveRegionAttributes.cs
index a9771b8..b61f957 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXLiveRegionAttributes.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXLiveRegionAttributes.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// Attributes which apply to nodes in live regions.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXNode.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Accessibility/AXNode.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs
index dd7b0d2..4a5b642 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXNode.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// A node in the accessibility tree.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AXNode
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXProperty.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXProperty.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Accessibility/AXProperty.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXProperty.cs
index 4982d0f..0969ac0 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXProperty.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXProperty.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AXProperty
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXPropertySource.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySource.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/Accessibility/AXPropertySource.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySource.cs
index 1d6081d..637a7cf 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXPropertySource.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySource.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// A single source for a computed AX property.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AXPropertySource
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXPropertySourceType.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySourceType.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Accessibility/AXPropertySourceType.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySourceType.cs
index c2c0666..4757889 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXPropertySourceType.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXPropertySourceType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// Enum of possible property sources.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXRelatedNode.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Accessibility/AXRelatedNode.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs
index 5bf97c1..9df636a 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXRelatedNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelatedNode.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AXRelatedNode
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXRelationshipAttributes.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelationshipAttributes.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Accessibility/AXRelationshipAttributes.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelationshipAttributes.cs
index d988a92..96ed84e 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXRelationshipAttributes.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXRelationshipAttributes.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// Relationships between elements other than parent/child/sibling.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXValue.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Accessibility/AXValue.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs
index fec6c7a..3c15f59 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXValue.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValue.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// A single computed AX property.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AXValue
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXValueType.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueType.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Accessibility/AXValueType.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueType.cs
index 925ac59..c08a1b5 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXValueType.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXValueType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// Enum of possible property types.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXWidgetAttributes.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXWidgetAttributes.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Accessibility/AXWidgetAttributes.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXWidgetAttributes.cs
index 19e2ab5..77ad5f8 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXWidgetAttributes.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXWidgetAttributes.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// Attributes which apply to widgets.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/AXWidgetStates.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXWidgetStates.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Accessibility/AXWidgetStates.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/AXWidgetStates.cs
index f50f88e..44acec7 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/AXWidgetStates.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/AXWidgetStates.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility{
 	/// <summary>
 	/// States which apply to widgets.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/GetAXNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Accessibility/GetAXNodeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommand.cs
index ffb9e62..80e70cf 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/GetAXNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// Fetches the accessibility node for this DOM node, if it exists.
 	/// </summary>
 	[Command(ProtocolName.Accessibility.GetAXNode)]
+	[SupportedBy("Chrome")]
 	public class GetAXNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Accessibility/GetAXNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Accessibility/GetAXNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommandResponse.cs
index 840e99c..ec2dce6 100644
--- a/source/ChromeDevTools/Protocol/Accessibility/GetAXNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Accessibility/GetAXNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Accessibility
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Accessibility
 {
 	/// <summary>
 	/// Fetches the accessibility node for this DOM node, if it exists.
 	/// </summary>
 	[CommandResponse(ProtocolName.Accessibility.GetAXNode)]
+	[SupportedBy("Chrome")]
 	public class GetAXNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/AnimationNode.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationNode.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Animation/AnimationNode.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/AnimationNode.cs
index bcf2ee8..953803e 100644
--- a/source/ChromeDevTools/Protocol/Animation/AnimationNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationNode.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// AnimationNode instance
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AnimationNode
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/AnimationPlayer.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayer.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Animation/AnimationPlayer.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayer.cs
index 0143d7e..0530e40 100644
--- a/source/ChromeDevTools/Protocol/Animation/AnimationPlayer.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayer.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// AnimationPlayer instance.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AnimationPlayer
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/AnimationPlayerCanceledEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCanceledEvent.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Animation/AnimationPlayerCanceledEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCanceledEvent.cs
index 1426ff5..1149c37 100644
--- a/source/ChromeDevTools/Protocol/Animation/AnimationPlayerCanceledEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCanceledEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Event for AnimationPlayers in the frontend that have been cancelled.
 	/// </summary>
 	[Event(ProtocolName.Animation.AnimationPlayerCanceled)]
+	[SupportedBy("Chrome")]
 	public class AnimationPlayerCanceledEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/AnimationPlayerCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCreatedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Animation/AnimationPlayerCreatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCreatedEvent.cs
index 6b14ea1..2b91750 100644
--- a/source/ChromeDevTools/Protocol/Animation/AnimationPlayerCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/AnimationPlayerCreatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Event for each animation player that has been created.
 	/// </summary>
 	[Event(ProtocolName.Animation.AnimationPlayerCreated)]
+	[SupportedBy("Chrome")]
 	public class AnimationPlayerCreatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Animation/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs
index b1f8aa6..8c28819 100644
--- a/source/ChromeDevTools/Protocol/Animation/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Enables animation domain notifications.
 	/// </summary>
 	[Command(ProtocolName.Animation.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Animation/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Animation/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommandResponse.cs
index 7be20ac..c332fb6 100644
--- a/source/ChromeDevTools/Protocol/Animation/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Enables animation domain notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.Animation.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Animation/GetAnimationPlayersForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/GetAnimationPlayersForNodeCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Animation/GetAnimationPlayersForNodeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/GetAnimationPlayersForNodeCommand.cs
index f64a0e9..b119b43 100644
--- a/source/ChromeDevTools/Protocol/Animation/GetAnimationPlayersForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/GetAnimationPlayersForNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Returns animation players relevant to the node.
 	/// </summary>
 	[Command(ProtocolName.Animation.GetAnimationPlayersForNode)]
+	[SupportedBy("Chrome")]
 	public class GetAnimationPlayersForNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/GetAnimationPlayersForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/GetAnimationPlayersForNodeCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Animation/GetAnimationPlayersForNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/GetAnimationPlayersForNodeCommandResponse.cs
index 893cf21..a963d5c 100644
--- a/source/ChromeDevTools/Protocol/Animation/GetAnimationPlayersForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/GetAnimationPlayersForNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Returns animation players relevant to the node.
 	/// </summary>
 	[CommandResponse(ProtocolName.Animation.GetAnimationPlayersForNode)]
+	[SupportedBy("Chrome")]
 	public class GetAnimationPlayersForNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/GetPlaybackRateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Animation/GetPlaybackRateCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs
index 85b8fe3..c3769a5 100644
--- a/source/ChromeDevTools/Protocol/Animation/GetPlaybackRateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Gets the playback rate of the document timeline.
 	/// </summary>
 	[Command(ProtocolName.Animation.GetPlaybackRate)]
+	[SupportedBy("Chrome")]
 	public class GetPlaybackRateCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Animation/GetPlaybackRateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Animation/GetPlaybackRateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommandResponse.cs
index 4e5d1b5..f106c24 100644
--- a/source/ChromeDevTools/Protocol/Animation/GetPlaybackRateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/GetPlaybackRateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Gets the playback rate of the document timeline.
 	/// </summary>
 	[CommandResponse(ProtocolName.Animation.GetPlaybackRate)]
+	[SupportedBy("Chrome")]
 	public class GetPlaybackRateCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/KeyframeStyle.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/KeyframeStyle.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Animation/KeyframeStyle.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/KeyframeStyle.cs
index d474e07..447d89b 100644
--- a/source/ChromeDevTools/Protocol/Animation/KeyframeStyle.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/KeyframeStyle.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Keyframe Style
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class KeyframeStyle
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/KeyframesRule.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/KeyframesRule.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Animation/KeyframesRule.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/KeyframesRule.cs
index 8bedf6c..69a1998 100644
--- a/source/ChromeDevTools/Protocol/Animation/KeyframesRule.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/KeyframesRule.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Keyframes Rule
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class KeyframesRule
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/SetCurrentTimeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetCurrentTimeCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Animation/SetCurrentTimeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/SetCurrentTimeCommand.cs
index f911fe6..a33f7bb 100644
--- a/source/ChromeDevTools/Protocol/Animation/SetCurrentTimeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetCurrentTimeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Sets the current time of the document timeline.
 	/// </summary>
 	[Command(ProtocolName.Animation.SetCurrentTime)]
+	[SupportedBy("Chrome")]
 	public class SetCurrentTimeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/SetCurrentTimeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetCurrentTimeCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Animation/SetCurrentTimeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/SetCurrentTimeCommandResponse.cs
index b8cec4c..21cd6f3 100644
--- a/source/ChromeDevTools/Protocol/Animation/SetCurrentTimeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetCurrentTimeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Sets the current time of the document timeline.
 	/// </summary>
 	[CommandResponse(ProtocolName.Animation.SetCurrentTime)]
+	[SupportedBy("Chrome")]
 	public class SetCurrentTimeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Animation/SetPlaybackRateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Animation/SetPlaybackRateCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs
index 6cccd9d..651aeba 100644
--- a/source/ChromeDevTools/Protocol/Animation/SetPlaybackRateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Sets the playback rate of the document timeline.
 	/// </summary>
 	[Command(ProtocolName.Animation.SetPlaybackRate)]
+	[SupportedBy("Chrome")]
 	public class SetPlaybackRateCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/SetPlaybackRateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Animation/SetPlaybackRateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommandResponse.cs
index 4f4a055..83f366a 100644
--- a/source/ChromeDevTools/Protocol/Animation/SetPlaybackRateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetPlaybackRateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Sets the playback rate of the document timeline.
 	/// </summary>
 	[CommandResponse(ProtocolName.Animation.SetPlaybackRate)]
+	[SupportedBy("Chrome")]
 	public class SetPlaybackRateCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Animation/SetTimingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Animation/SetTimingCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs
index e70757e..bd885a3 100644
--- a/source/ChromeDevTools/Protocol/Animation/SetTimingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Sets the timing of an animation node.
 	/// </summary>
 	[Command(ProtocolName.Animation.SetTiming)]
+	[SupportedBy("Chrome")]
 	public class SetTimingCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Animation/SetTimingCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Animation/SetTimingCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommandResponse.cs
index ae17bdf..0adbe3a 100644
--- a/source/ChromeDevTools/Protocol/Animation/SetTimingCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Animation/SetTimingCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Animation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Animation
 {
 	/// <summary>
 	/// Sets the timing of an animation node.
 	/// </summary>
 	[CommandResponse(ProtocolName.Animation.SetTiming)]
+	[SupportedBy("Chrome")]
 	public class SetTimingCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCache.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCache.cs
new file mode 100644
index 0000000..a7d3044
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCache.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Detailed application cache information.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class ApplicationCache
+	{
+		/// <summary>
+		/// Gets or sets Manifest URL.
+		/// </summary>
+		public string ManifestURL { get; set; }
+		/// <summary>
+		/// Gets or sets Application cache size.
+		/// </summary>
+		public double Size { get; set; }
+		/// <summary>
+		/// Gets or sets Application cache creation time.
+		/// </summary>
+		public double CreationTime { get; set; }
+		/// <summary>
+		/// Gets or sets Application cache update time.
+		/// </summary>
+		public double UpdateTime { get; set; }
+		/// <summary>
+		/// Gets or sets Application cache resources.
+		/// </summary>
+		public ApplicationCacheResource[] Resources { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheResource.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheResource.cs
new file mode 100644
index 0000000..b737ad7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheResource.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Detailed application cache resource information.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class ApplicationCacheResource
+	{
+		/// <summary>
+		/// Gets or sets Resource url.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Resource size.
+		/// </summary>
+		public long Size { get; set; }
+		/// <summary>
+		/// Gets or sets Resource type.
+		/// </summary>
+		public string Type { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
new file mode 100644
index 0000000..df2fb9c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	[Event(ProtocolName.ApplicationCache.ApplicationCacheStatusUpdated)]
+	[SupportedBy("Chrome")]
+	public class ApplicationCacheStatusUpdatedEvent
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the frame containing document whose application cache updated status.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Manifest URL.
+		/// </summary>
+		public string ManifestURL { get; set; }
+		/// <summary>
+		/// Gets or sets Updated application cache status.
+		/// </summary>
+		public long Status { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs
new file mode 100644
index 0000000..ffff30c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Enables application cache domain notifications.
+	/// </summary>
+	[Command(ProtocolName.ApplicationCache.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommandResponse.cs
new file mode 100644
index 0000000..d83eecc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Enables application cache domain notifications.
+	/// </summary>
+	[CommandResponse(ProtocolName.ApplicationCache.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/FrameWithManifest.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/FrameWithManifest.cs
new file mode 100644
index 0000000..f9d223e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/FrameWithManifest.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Frame identifier - manifest URL pair.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class FrameWithManifest
+	{
+		/// <summary>
+		/// Gets or sets Frame identifier.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Manifest URL.
+		/// </summary>
+		public string ManifestURL { get; set; }
+		/// <summary>
+		/// Gets or sets Application cache status.
+		/// </summary>
+		public long Status { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs
new file mode 100644
index 0000000..6dca4b4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Returns relevant application cache data for the document in given frame.
+	/// </summary>
+	[Command(ProtocolName.ApplicationCache.GetApplicationCacheForFrame)]
+	[SupportedBy("Chrome")]
+	public class GetApplicationCacheForFrameCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the frame containing document whose application cache is retrieved.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
new file mode 100644
index 0000000..ae1f553
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Returns relevant application cache data for the document in given frame.
+	/// </summary>
+	[CommandResponse(ProtocolName.ApplicationCache.GetApplicationCacheForFrame)]
+	[SupportedBy("Chrome")]
+	public class GetApplicationCacheForFrameCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Relevant application cache data for the document in given frame.
+		/// </summary>
+		public ApplicationCache ApplicationCache { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs
new file mode 100644
index 0000000..0cd1f98
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache.
+	/// </summary>
+	[Command(ProtocolName.ApplicationCache.GetFramesWithManifests)]
+	[SupportedBy("Chrome")]
+	public class GetFramesWithManifestsCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
new file mode 100644
index 0000000..f189984
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache.
+	/// </summary>
+	[CommandResponse(ProtocolName.ApplicationCache.GetFramesWithManifests)]
+	[SupportedBy("Chrome")]
+	public class GetFramesWithManifestsCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Array of frame identifiers with manifest urls for each frame containing a document associated with some application cache.
+		/// </summary>
+		public FrameWithManifest[] FrameIds { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs
new file mode 100644
index 0000000..5faa27e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Returns manifest URL for document in the given frame.
+	/// </summary>
+	[Command(ProtocolName.ApplicationCache.GetManifestForFrame)]
+	[SupportedBy("Chrome")]
+	public class GetManifestForFrameCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the frame containing document whose manifest is retrieved.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommandResponse.cs
new file mode 100644
index 0000000..8e2fed3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/GetManifestForFrameCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	/// <summary>
+	/// Returns manifest URL for document in the given frame.
+	/// </summary>
+	[CommandResponse(ProtocolName.ApplicationCache.GetManifestForFrame)]
+	[SupportedBy("Chrome")]
+	public class GetManifestForFrameCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Manifest URL for document in the given frame.
+		/// </summary>
+		public string ManifestURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/NetworkStateUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/NetworkStateUpdatedEvent.cs
new file mode 100644
index 0000000..0084c74
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/ApplicationCache/NetworkStateUpdatedEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ApplicationCache
+{
+	[Event(ProtocolName.ApplicationCache.NetworkStateUpdated)]
+	[SupportedBy("Chrome")]
+	public class NetworkStateUpdatedEvent
+	{
+		/// <summary>
+		/// Gets or sets IsNowOnline
+		/// </summary>
+		public bool IsNowOnline { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/AddRuleCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/CSS/AddRuleCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs
index 356c3cd..ba3998c 100644
--- a/source/ChromeDevTools/Protocol/CSS/AddRuleCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Inserts a new rule with the given <code>ruleText</code> in a stylesheet with given <code>styleSheetId</code>, at the position specified by <code>location</code>.
 	/// </summary>
 	[Command(ProtocolName.CSS.AddRule)]
+	[SupportedBy("Chrome")]
 	public class AddRuleCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/AddRuleCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/CSS/AddRuleCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommandResponse.cs
index 08924d8..9a08e66 100644
--- a/source/ChromeDevTools/Protocol/CSS/AddRuleCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/AddRuleCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Inserts a new rule with the given <code>ruleText</code> in a stylesheet with given <code>styleSheetId</code>, at the position specified by <code>location</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.AddRule)]
+	[SupportedBy("Chrome")]
 	public class AddRuleCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/CSSComputedStyleProperty.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSComputedStyleProperty.cs
new file mode 100644
index 0000000..f911d72
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSComputedStyleProperty.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class CSSComputedStyleProperty
+	{
+		/// <summary>
+		/// Gets or sets Computed style property name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Computed style property value.
+		/// </summary>
+		public string Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/CSSMedia.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/CSS/CSSMedia.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs
index 35a0a9d..46a6b23 100644
--- a/source/ChromeDevTools/Protocol/CSS/CSSMedia.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSMedia.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// CSS media rule descriptor.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CSSMedia
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/CSSProperty.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSProperty.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/CSS/CSSProperty.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CSSProperty.cs
index 8c2f14d..345843e 100644
--- a/source/ChromeDevTools/Protocol/CSS/CSSProperty.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSProperty.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// CSS property declaration data.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CSSProperty
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/CSSRule.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSRule.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/CSS/CSSRule.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CSSRule.cs
index ce8c189..bae5f0e 100644
--- a/source/ChromeDevTools/Protocol/CSS/CSSRule.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSRule.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// CSS rule representation.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CSSRule
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/CSSStyle.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSStyle.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/CSS/CSSStyle.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CSSStyle.cs
index fd7104b..c956794 100644
--- a/source/ChromeDevTools/Protocol/CSS/CSSStyle.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSStyle.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// CSS style representation.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CSSStyle
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/CSSStyleSheetHeader.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSStyleSheetHeader.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/CSS/CSSStyleSheetHeader.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CSSStyleSheetHeader.cs
index 46bcb3b..99d3eae 100644
--- a/source/ChromeDevTools/Protocol/CSS/CSSStyleSheetHeader.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CSSStyleSheetHeader.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// CSS stylesheet metainformation.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CSSStyleSheetHeader
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/CreateStyleSheetCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/CSS/CreateStyleSheetCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs
index 8fb8ab0..26b472d 100644
--- a/source/ChromeDevTools/Protocol/CSS/CreateStyleSheetCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Creates a new special "via-inspector" stylesheet in the frame with given <code>frameId</code>.
 	/// </summary>
 	[Command(ProtocolName.CSS.CreateStyleSheet)]
+	[SupportedBy("Chrome")]
 	public class CreateStyleSheetCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/CreateStyleSheetCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/CSS/CreateStyleSheetCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommandResponse.cs
index 5c838e1..91b03d3 100644
--- a/source/ChromeDevTools/Protocol/CSS/CreateStyleSheetCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/CreateStyleSheetCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Creates a new special "via-inspector" stylesheet in the frame with given <code>frameId</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.CreateStyleSheet)]
+	[SupportedBy("Chrome")]
 	public class CreateStyleSheetCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs
new file mode 100644
index 0000000..7d08df8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Disables the CSS agent for the given page.
+	/// </summary>
+	[Command(ProtocolName.CSS.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommandResponse.cs
new file mode 100644
index 0000000..fd03457
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Disables the CSS agent for the given page.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs
new file mode 100644
index 0000000..c0d53df
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received.
+	/// </summary>
+	[Command(ProtocolName.CSS.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommandResponse.cs
new file mode 100644
index 0000000..21be53b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs
new file mode 100644
index 0000000..7400709
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser.
+	/// </summary>
+	[Command(ProtocolName.CSS.ForcePseudoState)]
+	[SupportedBy("Chrome")]
+	public class ForcePseudoStateCommand
+	{
+		/// <summary>
+		/// Gets or sets The element id for which to force the pseudo state.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Element pseudo classes to force when computing the element's style.
+		/// </summary>
+		public string[] ForcedPseudoClasses { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommandResponse.cs
new file mode 100644
index 0000000..9b6d5e0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/ForcePseudoStateCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.ForcePseudoState)]
+	[SupportedBy("Chrome")]
+	public class ForcePseudoStateCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs
new file mode 100644
index 0000000..9247eaf
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns the computed style for a DOM node identified by <code>nodeId</code>.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetComputedStyleForNode)]
+	[SupportedBy("Chrome")]
+	public class GetComputedStyleForNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets NodeId
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommandResponse.cs
new file mode 100644
index 0000000..e9dbb3d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetComputedStyleForNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns the computed style for a DOM node identified by <code>nodeId</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetComputedStyleForNode)]
+	[SupportedBy("Chrome")]
+	public class GetComputedStyleForNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Computed style for the specified DOM node.
+		/// </summary>
+		public CSSComputedStyleProperty[] ComputedStyle { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs
new file mode 100644
index 0000000..1437f8a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns the styles defined inline (explicitly in the "style" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetInlineStylesForNode)]
+	[SupportedBy("Chrome")]
+	public class GetInlineStylesForNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets NodeId
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommandResponse.cs
new file mode 100644
index 0000000..dba8411
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetInlineStylesForNodeCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns the styles defined inline (explicitly in the "style" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetInlineStylesForNode)]
+	[SupportedBy("Chrome")]
+	public class GetInlineStylesForNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Inline style for the specified DOM node.
+		/// </summary>
+		public CSSStyle InlineStyle { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute-defined element style (e.g. resulting from "width=20 height=100%").
+		/// </summary>
+		public CSSStyle AttributesStyle { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/GetMatchedStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/CSS/GetMatchedStylesForNodeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
index 7c712cf..383b01f 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetMatchedStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Returns requested styles for a DOM node identified by <code>nodeId</code>.
 	/// </summary>
 	[Command(ProtocolName.CSS.GetMatchedStylesForNode)]
+	[SupportedBy("Chrome")]
 	public class GetMatchedStylesForNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs
new file mode 100644
index 0000000..3b0c3a7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMatchedStylesForNodeCommandResponse.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns requested styles for a DOM node identified by <code>nodeId</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetMatchedStylesForNode)]
+	[SupportedBy("Chrome")]
+	public class GetMatchedStylesForNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets CSS rules matching this node, from all applicable stylesheets.
+		/// </summary>
+		public RuleMatch[] MatchedCSSRules { get; set; }
+		/// <summary>
+		/// Gets or sets Pseudo style matches for this node.
+		/// </summary>
+		public PseudoIdMatches[] PseudoElements { get; set; }
+		/// <summary>
+		/// Gets or sets A chain of inherited styles (from the immediate node parent up to the DOM tree root).
+		/// </summary>
+		public InheritedStyleEntry[] Inherited { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/GetMediaQueriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/CSS/GetMediaQueriesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs
index 01d3ff9..fea14f3 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetMediaQueriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Returns all media queries parsed by the rendering engine.
 	/// </summary>
 	[Command(ProtocolName.CSS.GetMediaQueries)]
+	[SupportedBy("Chrome")]
 	public class GetMediaQueriesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/CSS/GetMediaQueriesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/GetMediaQueriesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommandResponse.cs
index 4cb300b..e6a2570 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetMediaQueriesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetMediaQueriesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Returns all media queries parsed by the rendering engine.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.GetMediaQueries)]
+	[SupportedBy("Chrome")]
 	public class GetMediaQueriesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/GetPlatformFontsForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/GetPlatformFontsForNodeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs
index 8a79c07..f1c0a84 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetPlatformFontsForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Requests information about platform fonts which we used to render child TextNodes in the given node.
 	/// </summary>
 	[Command(ProtocolName.CSS.GetPlatformFontsForNode)]
+	[SupportedBy("Chrome")]
 	public class GetPlatformFontsForNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/GetPlatformFontsForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommandResponse.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/CSS/GetPlatformFontsForNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommandResponse.cs
index da6f049..b1a7608 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetPlatformFontsForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetPlatformFontsForNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Requests information about platform fonts which we used to render child TextNodes in the given node.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.GetPlatformFontsForNode)]
+	[SupportedBy("Chrome")]
 	public class GetPlatformFontsForNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs
new file mode 100644
index 0000000..229c292
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns the current textual content and the URL for a stylesheet.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetStyleSheetText)]
+	[SupportedBy("Chrome")]
+	public class GetStyleSheetTextCommand
+	{
+		/// <summary>
+		/// Gets or sets StyleSheetId
+		/// </summary>
+		public string StyleSheetId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommandResponse.cs
new file mode 100644
index 0000000..c50de64
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/GetStyleSheetTextCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Returns the current textual content and the URL for a stylesheet.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetStyleSheetText)]
+	[SupportedBy("Chrome")]
+	public class GetStyleSheetTextCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets The stylesheet text.
+		/// </summary>
+		public string Text { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/InheritedStyleEntry.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/InheritedStyleEntry.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/CSS/InheritedStyleEntry.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/InheritedStyleEntry.cs
index ac464e5..1fd4251 100644
--- a/source/ChromeDevTools/Protocol/CSS/InheritedStyleEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/InheritedStyleEntry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Inherited CSS rule collection from ancestor node.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class InheritedStyleEntry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/MediaQuery.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQuery.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/CSS/MediaQuery.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/MediaQuery.cs
index 9766c84..87164a6 100644
--- a/source/ChromeDevTools/Protocol/CSS/MediaQuery.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQuery.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Media query descriptor.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class MediaQuery
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/MediaQueryExpression.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryExpression.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/CSS/MediaQueryExpression.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryExpression.cs
index 8bb71f7..bad4cf7 100644
--- a/source/ChromeDevTools/Protocol/CSS/MediaQueryExpression.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryExpression.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Media query expression descriptor.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class MediaQueryExpression
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryResultChangedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryResultChangedEvent.cs
new file mode 100644
index 0000000..dfeab50
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/MediaQueryResultChangedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Fires whenever a MediaQuery result changes (for example, after a browser window has been resized.) The current implementation considers only viewport-dependent media features.
+	/// </summary>
+	[Event(ProtocolName.CSS.MediaQueryResultChanged)]
+	[SupportedBy("Chrome")]
+	public class MediaQueryResultChangedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/PlatformFontUsage.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/PlatformFontUsage.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/CSS/PlatformFontUsage.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/PlatformFontUsage.cs
index 3acff17..0adf890 100644
--- a/source/ChromeDevTools/Protocol/CSS/PlatformFontUsage.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/PlatformFontUsage.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Information about amount of glyphs that were rendered with given font.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PlatformFontUsage
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/PseudoIdMatches.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/PseudoIdMatches.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/CSS/PseudoIdMatches.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/PseudoIdMatches.cs
index c52782a..57bc395 100644
--- a/source/ChromeDevTools/Protocol/CSS/PseudoIdMatches.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/PseudoIdMatches.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// CSS rule collection for a single pseudo style.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PseudoIdMatches
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/RuleMatch.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/RuleMatch.cs
new file mode 100644
index 0000000..628059a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/RuleMatch.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Match data for a CSS rule.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class RuleMatch
+	{
+		/// <summary>
+		/// Gets or sets CSS rule in the match.
+		/// </summary>
+		public CSSRule Rule { get; set; }
+		/// <summary>
+		/// Gets or sets Matching selector indices in the rule's selectorList selectors (0-based).
+		/// </summary>
+		public long[] MatchingSelectors { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/Selector.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/Selector.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/CSS/Selector.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/Selector.cs
index dd943dc..e5a7aec 100644
--- a/source/ChromeDevTools/Protocol/CSS/Selector.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/Selector.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Data for a simple selector (these are delimited by commas in a selector list).
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Selector
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SelectorList.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SelectorList.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/CSS/SelectorList.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SelectorList.cs
index e2afc2e..7a23b67 100644
--- a/source/ChromeDevTools/Protocol/CSS/SelectorList.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SelectorList.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Selector list data.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class SelectorList
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SetMediaTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/CSS/SetMediaTextCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs
index b955c22..7439107 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetMediaTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Modifies the rule selector.
 	/// </summary>
 	[Command(ProtocolName.CSS.SetMediaText)]
+	[SupportedBy("Chrome")]
 	public class SetMediaTextCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SetMediaTextCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/CSS/SetMediaTextCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommandResponse.cs
index 769cc84..fa5a427 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetMediaTextCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetMediaTextCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Modifies the rule selector.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.SetMediaText)]
+	[SupportedBy("Chrome")]
 	public class SetMediaTextCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SetPropertyTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetPropertyTextCommand.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/CSS/SetPropertyTextCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetPropertyTextCommand.cs
index ac18dd3..3814306 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetPropertyTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetPropertyTextCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Either replaces a property identified by <code>styleSheetId</code> and <code>range</code> with <code>text</code> or inserts a new property <code>text</code> at the position identified by an empty <code>range</code>.
 	/// </summary>
 	[Command(ProtocolName.CSS.SetPropertyText)]
+	[SupportedBy("Chrome")]
 	public class SetPropertyTextCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SetPropertyTextCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetPropertyTextCommandResponse.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/CSS/SetPropertyTextCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetPropertyTextCommandResponse.cs
index f4f552c..5536ef3 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetPropertyTextCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetPropertyTextCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Either replaces a property identified by <code>styleSheetId</code> and <code>range</code> with <code>text</code> or inserts a new property <code>text</code> at the position identified by an empty <code>range</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.SetPropertyText)]
+	[SupportedBy("Chrome")]
 	public class SetPropertyTextCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SetRuleSelectorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/CSS/SetRuleSelectorCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs
index c79932c..2fb444b 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetRuleSelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Modifies the rule selector.
 	/// </summary>
 	[Command(ProtocolName.CSS.SetRuleSelector)]
+	[SupportedBy("Chrome")]
 	public class SetRuleSelectorCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommandResponse.cs
new file mode 100644
index 0000000..5f37509
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetRuleSelectorCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Modifies the rule selector.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.SetRuleSelector)]
+	[SupportedBy("Chrome")]
+	public class SetRuleSelectorCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets The resulting rule after the selector modification.
+		/// </summary>
+		public CSSRule Rule { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/SetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/SetStyleSheetTextCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs
index 31d1010..0522008 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetStyleSheetTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Sets the new stylesheet text.
 	/// </summary>
 	[Command(ProtocolName.CSS.SetStyleSheetText)]
+	[SupportedBy("Chrome")]
 	public class SetStyleSheetTextCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/SetStyleSheetTextCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/CSS/SetStyleSheetTextCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs
index 4e44e6b..b7e35d9 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetStyleSheetTextCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SetStyleSheetTextCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Sets the new stylesheet text.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.SetStyleSheetText)]
+	[SupportedBy("Chrome")]
 	public class SetStyleSheetTextCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs
new file mode 100644
index 0000000..76a21c1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/ShorthandEntry.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class ShorthandEntry
+	{
+		/// <summary>
+		/// Gets or sets Shorthand name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Shorthand value.
+		/// </summary>
+		public string Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/SourceRange.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/SourceRange.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/CSS/SourceRange.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/SourceRange.cs
index f60b20f..7946759 100644
--- a/source/ChromeDevTools/Protocol/CSS/SourceRange.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/SourceRange.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
 {
 	/// <summary>
 	/// Text range within a resource. All numbers are zero-based.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class SourceRange
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetAddedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetAddedEvent.cs
new file mode 100644
index 0000000..22f4279
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetAddedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Fired whenever an active document stylesheet is added.
+	/// </summary>
+	[Event(ProtocolName.CSS.StyleSheetAdded)]
+	[SupportedBy("Chrome")]
+	public class StyleSheetAddedEvent
+	{
+		/// <summary>
+		/// Gets or sets Added stylesheet metainfo.
+		/// </summary>
+		public CSSStyleSheetHeader Header { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetChangedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetChangedEvent.cs
new file mode 100644
index 0000000..f4779a8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetChangedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Fired whenever a stylesheet is changed as a result of the client operation.
+	/// </summary>
+	[Event(ProtocolName.CSS.StyleSheetChanged)]
+	[SupportedBy("Chrome")]
+	public class StyleSheetChangedEvent
+	{
+		/// <summary>
+		/// Gets or sets StyleSheetId
+		/// </summary>
+		public string StyleSheetId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/StyleSheetOrigin.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetOrigin.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/CSS/StyleSheetOrigin.cs
rename to source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetOrigin.cs
index 6b78aec..830ef6c 100644
--- a/source/ChromeDevTools/Protocol/CSS/StyleSheetOrigin.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetOrigin.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS{
 	/// <summary>
 	/// Stylesheet type: "injected" for stylesheets injected via extension, "user-agent" for user-agent stylesheets, "inspector" for stylesheets created by the inspector (i.e. those holding the "via inspector" rules), "regular" for regular stylesheets.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetRemovedEvent.cs
new file mode 100644
index 0000000..f1e1ae8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/CSS/StyleSheetRemovedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CSS
+{
+	/// <summary>
+	/// Fired whenever an active document stylesheet is removed.
+	/// </summary>
+	[Event(ProtocolName.CSS.StyleSheetRemoved)]
+	[SupportedBy("Chrome")]
+	public class StyleSheetRemovedEvent
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the removed stylesheet.
+		/// </summary>
+		public string StyleSheetId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/Cache.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/Cache.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/CacheStorage/Cache.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/Cache.cs
index 77a2167..62c3b89 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/Cache.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/Cache.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Cache identifier.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Cache
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/DataEntry.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DataEntry.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CacheStorage/DataEntry.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/DataEntry.cs
index ccacb52..32371cc 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/DataEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DataEntry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Data entry.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class DataEntry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/DeleteCacheCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/CacheStorage/DeleteCacheCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs
index c2019a8..7471b1d 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/DeleteCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Deletes a cache.
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.DeleteCache)]
+	[SupportedBy("Chrome")]
 	public class DeleteCacheCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/DeleteCacheCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommandResponse.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/CacheStorage/DeleteCacheCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommandResponse.cs
index 80e019b..9cc2387 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/DeleteCacheCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/DeleteCacheCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Deletes a cache.
 	/// </summary>
 	[CommandResponse(ProtocolName.CacheStorage.DeleteCache)]
+	[SupportedBy("Chrome")]
 	public class DeleteCacheCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/RequestCacheNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/CacheStorage/RequestCacheNamesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs
index 1544b80..616de72 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/RequestCacheNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Requests cache names.
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.RequestCacheNames)]
+	[SupportedBy("Chrome")]
 	public class RequestCacheNamesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/RequestCacheNamesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/CacheStorage/RequestCacheNamesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommandResponse.cs
index e6e8d01..72efd00 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/RequestCacheNamesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestCacheNamesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Requests cache names.
 	/// </summary>
 	[CommandResponse(ProtocolName.CacheStorage.RequestCacheNames)]
+	[SupportedBy("Chrome")]
 	public class RequestCacheNamesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/RequestEntriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/CacheStorage/RequestEntriesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs
index aeb6d8a..878856f 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/RequestEntriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Requests data from cache.
 	/// </summary>
 	[Command(ProtocolName.CacheStorage.RequestEntries)]
+	[SupportedBy("Chrome")]
 	public class RequestEntriesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CacheStorage/RequestEntriesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/CacheStorage/RequestEntriesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommandResponse.cs
index e41d44e..3f1015c 100644
--- a/source/ChromeDevTools/Protocol/CacheStorage/RequestEntriesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/CacheStorage/RequestEntriesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CacheStorage
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.CacheStorage
 {
 	/// <summary>
 	/// Requests data from cache.
 	/// </summary>
 	[CommandResponse(ProtocolName.CacheStorage.RequestEntries)]
+	[SupportedBy("Chrome")]
 	public class RequestEntriesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/Call.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/Call.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Canvas/Call.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/Call.cs
index c6535c1..e1c2f23 100644
--- a/source/ChromeDevTools/Protocol/Canvas/Call.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/Call.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Call
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/CallArgument.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/CallArgument.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Canvas/CallArgument.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/CallArgument.cs
index 6a6fcac..ed77cf8 100644
--- a/source/ChromeDevTools/Protocol/Canvas/CallArgument.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/CallArgument.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CallArgument
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/CaptureFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Canvas/CaptureFrameCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommand.cs
index 2f9cac9..4672770 100644
--- a/source/ChromeDevTools/Protocol/Canvas/CaptureFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Starts (or continues) a canvas frame capturing which will be stopped automatically after the next frame is prepared.
 	/// </summary>
 	[Command(ProtocolName.Canvas.CaptureFrame)]
+	[SupportedBy("Chrome")]
 	public class CaptureFrameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/CaptureFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Canvas/CaptureFrameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommandResponse.cs
index a2474f2..f8b1197 100644
--- a/source/ChromeDevTools/Protocol/Canvas/CaptureFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/CaptureFrameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Starts (or continues) a canvas frame capturing which will be stopped automatically after the next frame is prepared.
 	/// </summary>
 	[CommandResponse(ProtocolName.Canvas.CaptureFrame)]
+	[SupportedBy("Chrome")]
 	public class CaptureFrameCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/ContextCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ContextCreatedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Canvas/ContextCreatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/ContextCreatedEvent.cs
index 6cac287..88f0ac5 100644
--- a/source/ChromeDevTools/Protocol/Canvas/ContextCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/ContextCreatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Fired when a canvas context has been created in the given frame. The context may not be instrumented (see hasUninstrumentedCanvases command).
 	/// </summary>
 	[Event(ProtocolName.Canvas.ContextCreated)]
+	[SupportedBy("Chrome")]
 	public class ContextCreatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/DisableCommand.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Canvas/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/DisableCommand.cs
index 35f8100..c673832 100644
--- a/source/ChromeDevTools/Protocol/Canvas/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Disables Canvas inspection.
 	/// </summary>
 	[Command(ProtocolName.Canvas.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/DisableCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Canvas/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/DisableCommandResponse.cs
index 8b1917f..c9a9bde 100644
--- a/source/ChromeDevTools/Protocol/Canvas/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Disables Canvas inspection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Canvas.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/DropTraceLogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/DropTraceLogCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Canvas/DropTraceLogCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/DropTraceLogCommand.cs
index 4f8ddf3..0938475 100644
--- a/source/ChromeDevTools/Protocol/Canvas/DropTraceLogCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/DropTraceLogCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[Command(ProtocolName.Canvas.DropTraceLog)]
+	[SupportedBy("Chrome")]
 	public class DropTraceLogCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/DropTraceLogCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/DropTraceLogCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/Canvas/DropTraceLogCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/DropTraceLogCommandResponse.cs
index 8fb13ca..6e7360d 100644
--- a/source/ChromeDevTools/Protocol/Canvas/DropTraceLogCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/DropTraceLogCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[CommandResponse(ProtocolName.Canvas.DropTraceLog)]
+	[SupportedBy("Chrome")]
 	public class DropTraceLogCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/EnableCommand.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Canvas/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/EnableCommand.cs
index 65c7aea..be2d04a 100644
--- a/source/ChromeDevTools/Protocol/Canvas/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Enables Canvas inspection.
 	/// </summary>
 	[Command(ProtocolName.Canvas.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/EnableCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Canvas/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/EnableCommandResponse.cs
index b7d7d87..f065a7c 100644
--- a/source/ChromeDevTools/Protocol/Canvas/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Enables Canvas inspection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Canvas.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/EvaluateTraceLogCallArgumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Canvas/EvaluateTraceLogCallArgumentCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommand.cs
index d4537ab..573b7da 100644
--- a/source/ChromeDevTools/Protocol/Canvas/EvaluateTraceLogCallArgumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Evaluates a given trace call argument or its result.
 	/// </summary>
 	[Command(ProtocolName.Canvas.EvaluateTraceLogCallArgument)]
+	[SupportedBy("Chrome")]
 	public class EvaluateTraceLogCallArgumentCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
index 33ab334..c46b108 100644
--- a/source/ChromeDevTools/Protocol/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/EvaluateTraceLogCallArgumentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Evaluates a given trace call argument or its result.
 	/// </summary>
 	[CommandResponse(ProtocolName.Canvas.EvaluateTraceLogCallArgument)]
+	[SupportedBy("Chrome")]
 	public class EvaluateTraceLogCallArgumentCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/GetResourceStateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetResourceStateCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Canvas/GetResourceStateCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/GetResourceStateCommand.cs
index 8462854..d7bff83 100644
--- a/source/ChromeDevTools/Protocol/Canvas/GetResourceStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetResourceStateCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[Command(ProtocolName.Canvas.GetResourceState)]
+	[SupportedBy("Chrome")]
 	public class GetResourceStateCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/GetResourceStateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetResourceStateCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Canvas/GetResourceStateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/GetResourceStateCommandResponse.cs
index 1a6512e..796e7ab 100644
--- a/source/ChromeDevTools/Protocol/Canvas/GetResourceStateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetResourceStateCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[CommandResponse(ProtocolName.Canvas.GetResourceState)]
+	[SupportedBy("Chrome")]
 	public class GetResourceStateCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/GetTraceLogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Canvas/GetTraceLogCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommand.cs
index 166b25a..47f43e4 100644
--- a/source/ChromeDevTools/Protocol/Canvas/GetTraceLogCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[Command(ProtocolName.Canvas.GetTraceLog)]
+	[SupportedBy("Chrome")]
 	public class GetTraceLogCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/GetTraceLogCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Canvas/GetTraceLogCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommandResponse.cs
index 2e3fde7..4fa2915 100644
--- a/source/ChromeDevTools/Protocol/Canvas/GetTraceLogCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/GetTraceLogCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[CommandResponse(ProtocolName.Canvas.GetTraceLog)]
+	[SupportedBy("Chrome")]
 	public class GetTraceLogCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/HasUninstrumentedCanvasesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/HasUninstrumentedCanvasesCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Canvas/HasUninstrumentedCanvasesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/HasUninstrumentedCanvasesCommand.cs
index e1f1780..2ac3ffe 100644
--- a/source/ChromeDevTools/Protocol/Canvas/HasUninstrumentedCanvasesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/HasUninstrumentedCanvasesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Checks if there is any uninstrumented canvas in the inspected page.
 	/// </summary>
 	[Command(ProtocolName.Canvas.HasUninstrumentedCanvases)]
+	[SupportedBy("Chrome")]
 	public class HasUninstrumentedCanvasesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/HasUninstrumentedCanvasesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/HasUninstrumentedCanvasesCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Canvas/HasUninstrumentedCanvasesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/HasUninstrumentedCanvasesCommandResponse.cs
index 0f9c1fa..dd24ea0 100644
--- a/source/ChromeDevTools/Protocol/Canvas/HasUninstrumentedCanvasesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/HasUninstrumentedCanvasesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Checks if there is any uninstrumented canvas in the inspected page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Canvas.HasUninstrumentedCanvases)]
+	[SupportedBy("Chrome")]
 	public class HasUninstrumentedCanvasesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/ReplayTraceLogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ReplayTraceLogCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Canvas/ReplayTraceLogCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/ReplayTraceLogCommand.cs
index 03b2d55..34fc570 100644
--- a/source/ChromeDevTools/Protocol/Canvas/ReplayTraceLogCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/ReplayTraceLogCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[Command(ProtocolName.Canvas.ReplayTraceLog)]
+	[SupportedBy("Chrome")]
 	public class ReplayTraceLogCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/ReplayTraceLogCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ReplayTraceLogCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Canvas/ReplayTraceLogCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/ReplayTraceLogCommandResponse.cs
index a77f54f..16ec6f5 100644
--- a/source/ChromeDevTools/Protocol/Canvas/ReplayTraceLogCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/ReplayTraceLogCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[CommandResponse(ProtocolName.Canvas.ReplayTraceLog)]
+	[SupportedBy("Chrome")]
 	public class ReplayTraceLogCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/ResourceState.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceState.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Canvas/ResourceState.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceState.cs
index 10890bf..63962c6 100644
--- a/source/ChromeDevTools/Protocol/Canvas/ResourceState.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceState.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Resource state.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ResourceState
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/ResourceStateDescriptor.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceStateDescriptor.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Canvas/ResourceStateDescriptor.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceStateDescriptor.cs
index a2050eb..fa47bcd 100644
--- a/source/ChromeDevTools/Protocol/Canvas/ResourceStateDescriptor.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/ResourceStateDescriptor.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Resource state descriptor.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ResourceStateDescriptor
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/StartCapturingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Canvas/StartCapturingCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommand.cs
index 8b78922..1074bef 100644
--- a/source/ChromeDevTools/Protocol/Canvas/StartCapturingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Starts (or continues) consecutive canvas frames capturing. The capturing is stopped by the corresponding stopCapturing command.
 	/// </summary>
 	[Command(ProtocolName.Canvas.StartCapturing)]
+	[SupportedBy("Chrome")]
 	public class StartCapturingCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/StartCapturingCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Canvas/StartCapturingCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommandResponse.cs
index 5d8e7d2..3cab6c7 100644
--- a/source/ChromeDevTools/Protocol/Canvas/StartCapturingCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/StartCapturingCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Starts (or continues) consecutive canvas frames capturing. The capturing is stopped by the corresponding stopCapturing command.
 	/// </summary>
 	[CommandResponse(ProtocolName.Canvas.StartCapturing)]
+	[SupportedBy("Chrome")]
 	public class StartCapturingCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/StopCapturingCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/StopCapturingCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Canvas/StopCapturingCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/StopCapturingCommand.cs
index dbc44fa..0dcb94a 100644
--- a/source/ChromeDevTools/Protocol/Canvas/StopCapturingCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/StopCapturingCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[Command(ProtocolName.Canvas.StopCapturing)]
+	[SupportedBy("Chrome")]
 	public class StopCapturingCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/StopCapturingCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/StopCapturingCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/Canvas/StopCapturingCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/StopCapturingCommandResponse.cs
index 96e1387..22f72e0 100644
--- a/source/ChromeDevTools/Protocol/Canvas/StopCapturingCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/StopCapturingCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	[CommandResponse(ProtocolName.Canvas.StopCapturing)]
+	[SupportedBy("Chrome")]
 	public class StopCapturingCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Canvas/TraceLog.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLog.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Canvas/TraceLog.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLog.cs
index 0d38863..0ac0af4 100644
--- a/source/ChromeDevTools/Protocol/Canvas/TraceLog.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLog.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class TraceLog
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Canvas/TraceLogsRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLogsRemovedEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Canvas/TraceLogsRemovedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLogsRemovedEvent.cs
index a7dcb25..4b79749 100644
--- a/source/ChromeDevTools/Protocol/Canvas/TraceLogsRemovedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Canvas/TraceLogsRemovedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Canvas
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Canvas
 {
 	/// <summary>
 	/// Fired when a set of trace logs were removed from the backend. If no parameters are given, all trace logs were removed.
 	/// </summary>
 	[Event(ProtocolName.Canvas.TraceLogsRemoved)]
+	[SupportedBy("Chrome")]
 	public class TraceLogsRemovedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Console/AsyncStackTrace.cs b/source/ChromeDevTools/Protocol/Chrome/Console/AsyncStackTrace.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Console/AsyncStackTrace.cs
rename to source/ChromeDevTools/Protocol/Chrome/Console/AsyncStackTrace.cs
index 838766e..3067ba1 100644
--- a/source/ChromeDevTools/Protocol/Console/AsyncStackTrace.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/AsyncStackTrace.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 {
 	/// <summary>
 	/// Asynchronous JavaScript call stack.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AsyncStackTrace
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Console/CallFrame.cs b/source/ChromeDevTools/Protocol/Chrome/Console/CallFrame.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Console/CallFrame.cs
rename to source/ChromeDevTools/Protocol/Chrome/Console/CallFrame.cs
index 4f59404..f55c0ab 100644
--- a/source/ChromeDevTools/Protocol/Console/CallFrame.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/CallFrame.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 {
 	/// <summary>
 	/// Stack entry for console errors and assertions.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CallFrame
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs
new file mode 100644
index 0000000..400f9eb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Clears console messages collected in the browser.
+	/// </summary>
+	[Command(ProtocolName.Console.ClearMessages)]
+	[SupportedBy("Chrome")]
+	public class ClearMessagesCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommandResponse.cs
new file mode 100644
index 0000000..95a2094
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/ClearMessagesCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Clears console messages collected in the browser.
+	/// </summary>
+	[CommandResponse(ProtocolName.Console.ClearMessages)]
+	[SupportedBy("Chrome")]
+	public class ClearMessagesCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Console/ConsoleMessage.cs b/source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs
similarity index 96%
rename from source/ChromeDevTools/Protocol/Console/ConsoleMessage.cs
rename to source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs
index 39766bd..eb7f2f2 100644
--- a/source/ChromeDevTools/Protocol/Console/ConsoleMessage.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/ConsoleMessage.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 {
 	/// <summary>
 	/// Console message.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ConsoleMessage
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs
new file mode 100644
index 0000000..24ebcf9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Disables console domain, prevents further console messages from being reported to the client.
+	/// </summary>
+	[Command(ProtocolName.Console.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommandResponse.cs
new file mode 100644
index 0000000..4dfa22b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Disables console domain, prevents further console messages from being reported to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.Console.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs
new file mode 100644
index 0000000..7e98dd7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification.
+	/// </summary>
+	[Command(ProtocolName.Console.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommandResponse.cs
new file mode 100644
index 0000000..16ae4ee
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification.
+	/// </summary>
+	[CommandResponse(ProtocolName.Console.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/MessageAddedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Console/MessageAddedEvent.cs
new file mode 100644
index 0000000..a0fc6a4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/MessageAddedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Issued when new console message is added.
+	/// </summary>
+	[Event(ProtocolName.Console.MessageAdded)]
+	[SupportedBy("Chrome")]
+	public class MessageAddedEvent
+	{
+		/// <summary>
+		/// Gets or sets Console message that has been added.
+		/// </summary>
+		public ConsoleMessage Message { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Console/MessageRepeatCountUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Console/MessageRepeatCountUpdatedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Console/MessageRepeatCountUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Console/MessageRepeatCountUpdatedEvent.cs
index 647ebc1..99bf5f7 100644
--- a/source/ChromeDevTools/Protocol/Console/MessageRepeatCountUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/MessageRepeatCountUpdatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
 {
 	/// <summary>
 	/// Is not issued. Will be gone in the future versions of the protocol.
 	/// </summary>
 	[Event(ProtocolName.Console.MessageRepeatCountUpdated)]
+	[SupportedBy("Chrome")]
 	public class MessageRepeatCountUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs
new file mode 100644
index 0000000..b84123f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Console/MessagesClearedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Console
+{
+	/// <summary>
+	/// Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation.
+	/// </summary>
+	[Event(ProtocolName.Console.MessagesCleared)]
+	[SupportedBy("Chrome")]
+	public class MessagesClearedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/AttributeModifiedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/AttributeModifiedEvent.cs
new file mode 100644
index 0000000..b3ac444
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/AttributeModifiedEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Fired when <code>Element</code>'s attribute is modified.
+	/// </summary>
+	[Event(ProtocolName.DOM.AttributeModified)]
+	[SupportedBy("Chrome")]
+	public class AttributeModifiedEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the node that has changed.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute value.
+		/// </summary>
+		public string Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/AttributeRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/AttributeRemovedEvent.cs
new file mode 100644
index 0000000..dd46daa
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/AttributeRemovedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Fired when <code>Element</code>'s attribute is removed.
+	/// </summary>
+	[Event(ProtocolName.DOM.AttributeRemoved)]
+	[SupportedBy("Chrome")]
+	public class AttributeRemovedEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the node that has changed.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets A ttribute name.
+		/// </summary>
+		public string Name { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/BackendNode.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/BackendNode.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/BackendNode.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/BackendNode.cs
index 730ce89..a5552f3 100644
--- a/source/ChromeDevTools/Protocol/DOM/BackendNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/BackendNode.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Backend node with a friendly name.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class BackendNode
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/BoxModel.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/BoxModel.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/DOM/BoxModel.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/BoxModel.cs
index eb80a2c..cb403a7 100644
--- a/source/ChromeDevTools/Protocol/DOM/BoxModel.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/BoxModel.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Box model.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class BoxModel
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/CharacterDataModifiedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/CharacterDataModifiedEvent.cs
new file mode 100644
index 0000000..705119a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/CharacterDataModifiedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Mirrors <code>DOMCharacterDataModified</code> event.
+	/// </summary>
+	[Event(ProtocolName.DOM.CharacterDataModified)]
+	[SupportedBy("Chrome")]
+	public class CharacterDataModifiedEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the node that has changed.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets New text value.
+		/// </summary>
+		public string CharacterData { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeCountUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeCountUpdatedEvent.cs
new file mode 100644
index 0000000..0b65010
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeCountUpdatedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Fired when <code>Container</code>'s child node count has changed.
+	/// </summary>
+	[Event(ProtocolName.DOM.ChildNodeCountUpdated)]
+	[SupportedBy("Chrome")]
+	public class ChildNodeCountUpdatedEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the node that has changed.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets New node count.
+		/// </summary>
+		public long ChildNodeCount { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeInsertedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeInsertedEvent.cs
new file mode 100644
index 0000000..7bbafc6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeInsertedEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Mirrors <code>DOMNodeInserted</code> event.
+	/// </summary>
+	[Event(ProtocolName.DOM.ChildNodeInserted)]
+	[SupportedBy("Chrome")]
+	public class ChildNodeInsertedEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the node that has changed.
+		/// </summary>
+		public long ParentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets If of the previous siblint.
+		/// </summary>
+		public long PreviousNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Inserted node data.
+		/// </summary>
+		public Node Node { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeRemovedEvent.cs
new file mode 100644
index 0000000..820b892
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ChildNodeRemovedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Mirrors <code>DOMNodeRemoved</code> event.
+	/// </summary>
+	[Event(ProtocolName.DOM.ChildNodeRemoved)]
+	[SupportedBy("Chrome")]
+	public class ChildNodeRemovedEvent
+	{
+		/// <summary>
+		/// Gets or sets Parent id.
+		/// </summary>
+		public long ParentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Id of the node that has been removed.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/CopyToCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/DOM/CopyToCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs
index 530d7b6..e15460b 100644
--- a/source/ChromeDevTools/Protocol/DOM/CopyToCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Creates a deep copy of the specified node and places it into the target container before the given anchor.
 	/// </summary>
 	[Command(ProtocolName.DOM.CopyTo)]
+	[SupportedBy("Chrome")]
 	public class CopyToCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/CopyToCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/CopyToCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommandResponse.cs
index ed738c0..de4aac4 100644
--- a/source/ChromeDevTools/Protocol/DOM/CopyToCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/CopyToCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Creates a deep copy of the specified node and places it into the target container before the given anchor.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.CopyTo)]
+	[SupportedBy("Chrome")]
 	public class CopyToCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/DOM/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs
index 22f3e4d..82931bd 100644
--- a/source/ChromeDevTools/Protocol/DOM/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Disables DOM agent for the given page.
 	/// </summary>
 	[Command(ProtocolName.DOM.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommandResponse.cs
index b1d3dd6..e1ba872 100644
--- a/source/ChromeDevTools/Protocol/DOM/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Disables DOM agent for the given page.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs
new file mode 100644
index 0000000..6283ea6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.
+	/// </summary>
+	[Command(ProtocolName.DOM.DiscardSearchResults)]
+	[SupportedBy("Chrome")]
+	public class DiscardSearchResultsCommand
+	{
+		/// <summary>
+		/// Gets or sets Unique search session identifier.
+		/// </summary>
+		public string SearchId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommandResponse.cs
new file mode 100644
index 0000000..33c6722
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DiscardSearchResultsCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.DiscardSearchResults)]
+	[SupportedBy("Chrome")]
+	public class DiscardSearchResultsCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/DistributedNodesUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DistributedNodesUpdatedEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/DistributedNodesUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/DistributedNodesUpdatedEvent.cs
index 439253f..24de6a1 100644
--- a/source/ChromeDevTools/Protocol/DOM/DistributedNodesUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DistributedNodesUpdatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Called when distrubution is changed.
 	/// </summary>
 	[Event(ProtocolName.DOM.DistributedNodesUpdated)]
+	[SupportedBy("Chrome")]
 	public class DistributedNodesUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/DocumentUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/DocumentUpdatedEvent.cs
new file mode 100644
index 0000000..e879562
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/DocumentUpdatedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Fired when <code>Document</code> has been totally updated. Node ids are no longer valid.
+	/// </summary>
+	[Event(ProtocolName.DOM.DocumentUpdated)]
+	[SupportedBy("Chrome")]
+	public class DocumentUpdatedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/DOM/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs
index 640bc05..9334d2b 100644
--- a/source/ChromeDevTools/Protocol/DOM/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Enables DOM agent for the given page.
 	/// </summary>
 	[Command(ProtocolName.DOM.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/DOM/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommandResponse.cs
index fcf69e6..a970dee 100644
--- a/source/ChromeDevTools/Protocol/DOM/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Enables DOM agent for the given page.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/EventListener.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/EventListener.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/DOM/EventListener.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/EventListener.cs
index a0ac519..1f6bda1 100644
--- a/source/ChromeDevTools/Protocol/DOM/EventListener.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/EventListener.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class EventListener
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs
new file mode 100644
index 0000000..ef3e41a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Focuses the given element.
+	/// </summary>
+	[Command(ProtocolName.DOM.Focus)]
+	[SupportedBy("Chrome")]
+	public class FocusCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to focus.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommandResponse.cs
new file mode 100644
index 0000000..073c9db
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/FocusCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Focuses the given element.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.Focus)]
+	[SupportedBy("Chrome")]
+	public class FocusCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs
new file mode 100644
index 0000000..214beab
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns attributes for the specified node.
+	/// </summary>
+	[Command(ProtocolName.DOM.GetAttributes)]
+	[SupportedBy("Chrome")]
+	public class GetAttributesCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to retrieve attibutes for.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommandResponse.cs
new file mode 100644
index 0000000..3a7bf05
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetAttributesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns attributes for the specified node.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.GetAttributes)]
+	[SupportedBy("Chrome")]
+	public class GetAttributesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets An interleaved array of node attribute names and values.
+		/// </summary>
+		public string[] Attributes { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/GetBoxModelCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/GetBoxModelCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs
index 948fb5d..9c2d8b8 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetBoxModelCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Returns boxes for the currently selected nodes.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetBoxModel)]
+	[SupportedBy("Chrome")]
 	public class GetBoxModelCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetBoxModelCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/GetBoxModelCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommandResponse.cs
index 48c27c7..de6763b 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetBoxModelCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetBoxModelCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Returns boxes for the currently selected nodes.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetBoxModel)]
+	[SupportedBy("Chrome")]
 	public class GetBoxModelCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
new file mode 100644
index 0000000..f548157
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns the root DOM node to the caller.
+	/// </summary>
+	[Command(ProtocolName.DOM.GetDocument)]
+	[SupportedBy("Chrome")]
+	public class GetDocumentCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommandResponse.cs
new file mode 100644
index 0000000..bf91bdd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetDocumentCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns the root DOM node to the caller.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.GetDocument)]
+	[SupportedBy("Chrome")]
+	public class GetDocumentCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Resulting node.
+		/// </summary>
+		public Node Root { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs
new file mode 100644
index 0000000..b60e723
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns event listeners relevant to the node.
+	/// </summary>
+	[Command(ProtocolName.DOM.GetEventListenersForNode)]
+	[SupportedBy("Chrome")]
+	public class GetEventListenersForNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to get listeners for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Symbolic group name for handler value. Handler value is not returned without this parameter specified.
+		/// </summary>
+		public string ObjectGroup { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommandResponse.cs
new file mode 100644
index 0000000..8540f94
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetEventListenersForNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns event listeners relevant to the node.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.GetEventListenersForNode)]
+	[SupportedBy("Chrome")]
+	public class GetEventListenersForNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Array of relevant listeners.
+		/// </summary>
+		public EventListener[] Listeners { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/GetHighlightObjectForTestCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetHighlightObjectForTestCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/GetHighlightObjectForTestCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetHighlightObjectForTestCommand.cs
index c88a17a..42efbd5 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetHighlightObjectForTestCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetHighlightObjectForTestCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// For testing.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetHighlightObjectForTest)]
+	[SupportedBy("Chrome")]
 	public class GetHighlightObjectForTestCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetHighlightObjectForTestCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetHighlightObjectForTestCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/GetHighlightObjectForTestCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetHighlightObjectForTestCommandResponse.cs
index 74ea272..5e0c8fc 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetHighlightObjectForTestCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetHighlightObjectForTestCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// For testing.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetHighlightObjectForTest)]
+	[SupportedBy("Chrome")]
 	public class GetHighlightObjectForTestCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetNodeForLocationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/GetNodeForLocationCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs
index 12c3b92..7f9b51d 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetNodeForLocationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Returns node id at given location.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetNodeForLocation)]
+	[SupportedBy("Chrome")]
 	public class GetNodeForLocationCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetNodeForLocationCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/GetNodeForLocationCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommandResponse.cs
index 0c1f494..49d9629 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetNodeForLocationCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetNodeForLocationCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Returns node id at given location.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetNodeForLocation)]
+	[SupportedBy("Chrome")]
 	public class GetNodeForLocationCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs
new file mode 100644
index 0000000..279c92b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns node's HTML markup.
+	/// </summary>
+	[Command(ProtocolName.DOM.GetOuterHTML)]
+	[SupportedBy("Chrome")]
+	public class GetOuterHTMLCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to get markup for.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommandResponse.cs
new file mode 100644
index 0000000..c5543a2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetOuterHTMLCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns node's HTML markup.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.GetOuterHTML)]
+	[SupportedBy("Chrome")]
+	public class GetOuterHTMLCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Outer HTML markup.
+		/// </summary>
+		public string OuterHTML { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/GetRelayoutBoundaryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/GetRelayoutBoundaryCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs
index 0f1696d..4a8da01 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetRelayoutBoundaryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Returns the id of the nearest ancestor that is a relayout boundary.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetRelayoutBoundary)]
+	[SupportedBy("Chrome")]
 	public class GetRelayoutBoundaryCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetRelayoutBoundaryCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/GetRelayoutBoundaryCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommandResponse.cs
index df7b93e..28dae5e 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetRelayoutBoundaryCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetRelayoutBoundaryCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Returns the id of the nearest ancestor that is a relayout boundary.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetRelayoutBoundary)]
+	[SupportedBy("Chrome")]
 	public class GetRelayoutBoundaryCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs
new file mode 100644
index 0000000..984d493
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.
+	/// </summary>
+	[Command(ProtocolName.DOM.GetSearchResults)]
+	[SupportedBy("Chrome")]
+	public class GetSearchResultsCommand
+	{
+		/// <summary>
+		/// Gets or sets Unique search session identifier.
+		/// </summary>
+		public string SearchId { get; set; }
+		/// <summary>
+		/// Gets or sets Start index of the search result to be returned.
+		/// </summary>
+		public long FromIndex { get; set; }
+		/// <summary>
+		/// Gets or sets End index of the search result to be returned.
+		/// </summary>
+		public long ToIndex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommandResponse.cs
new file mode 100644
index 0000000..9950b51
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/GetSearchResultsCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.GetSearchResults)]
+	[SupportedBy("Chrome")]
+	public class GetSearchResultsCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Ids of the search result nodes.
+		/// </summary>
+		public long[] NodeIds { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs
new file mode 100644
index 0000000..2fd36b5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Hides DOM node highlight.
+	/// </summary>
+	[Command(ProtocolName.DOM.HideHighlight)]
+	[SupportedBy("Chrome")]
+	public class HideHighlightCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommandResponse.cs
new file mode 100644
index 0000000..df2135a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HideHighlightCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Hides DOM node highlight.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.HideHighlight)]
+	[SupportedBy("Chrome")]
+	public class HideHighlightCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightConfig.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/DOM/HighlightConfig.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs
index c9795fa..b2457ad 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightConfig.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightConfig.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Configuration data for the highlighting of page elements.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class HighlightConfig
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/DOM/HighlightFrameCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommand.cs
index 83d4d6d..a6eb81c 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Highlights owner element of the frame with given id.
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightFrame)]
+	[SupportedBy("Chrome")]
 	public class HighlightFrameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommandResponse.cs
new file mode 100644
index 0000000..47d5559
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightFrameCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Highlights owner element of the frame with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.HighlightFrame)]
+	[SupportedBy("Chrome")]
+	public class HighlightFrameCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/DOM/HighlightNodeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs
index 21e133d..96a71a8 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified.
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightNode)]
+	[SupportedBy("Chrome")]
 	public class HighlightNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommandResponse.cs
new file mode 100644
index 0000000..b136f0b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightNodeCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.HighlightNode)]
+	[SupportedBy("Chrome")]
+	public class HighlightNodeCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightQuadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/DOM/HighlightQuadCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommand.cs
index 6fbf7b2..86c3c0d 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightQuadCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Highlights given quad. Coordinates are absolute with respect to the main frame viewport.
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightQuad)]
+	[SupportedBy("Chrome")]
 	public class HighlightQuadCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommandResponse.cs
new file mode 100644
index 0000000..f8c6008
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightQuadCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Highlights given quad. Coordinates are absolute with respect to the main frame viewport.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.HighlightQuad)]
+	[SupportedBy("Chrome")]
+	public class HighlightQuadCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightRectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/DOM/HighlightRectCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs
index 81059ee..cd6a963 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightRectCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.
 	/// </summary>
 	[Command(ProtocolName.DOM.HighlightRect)]
+	[SupportedBy("Chrome")]
 	public class HighlightRectCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommandResponse.cs
new file mode 100644
index 0000000..b377ab8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/HighlightRectCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.HighlightRect)]
+	[SupportedBy("Chrome")]
+	public class HighlightRectCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/InlineStyleInvalidatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/InlineStyleInvalidatedEvent.cs
new file mode 100644
index 0000000..979c302
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/InlineStyleInvalidatedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Fired when <code>Element</code>'s inline style is modified via a CSS property modification.
+	/// </summary>
+	[Event(ProtocolName.DOM.InlineStyleInvalidated)]
+	[SupportedBy("Chrome")]
+	public class InlineStyleInvalidatedEvent
+	{
+		/// <summary>
+		/// Gets or sets Ids of the nodes for which the inline styles have been invalidated.
+		/// </summary>
+		public long[] NodeIds { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/InspectNodeRequestedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/InspectNodeRequestedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/InspectNodeRequestedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/InspectNodeRequestedEvent.cs
index dcf9e78..88a2c01 100644
--- a/source/ChromeDevTools/Protocol/DOM/InspectNodeRequestedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/InspectNodeRequestedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Fired when the node should be inspected. This happens after call to <code>setInspectModeEnabled</code>.
 	/// </summary>
 	[Event(ProtocolName.DOM.InspectNodeRequested)]
+	[SupportedBy("Chrome")]
 	public class InspectNodeRequestedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs
new file mode 100644
index 0000000..4516516
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Marks last undoable state.
+	/// </summary>
+	[Command(ProtocolName.DOM.MarkUndoableState)]
+	[SupportedBy("Chrome")]
+	public class MarkUndoableStateCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommandResponse.cs
new file mode 100644
index 0000000..a8e57e7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/MarkUndoableStateCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Marks last undoable state.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.MarkUndoableState)]
+	[SupportedBy("Chrome")]
+	public class MarkUndoableStateCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/MoveToCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/DOM/MoveToCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs
index 12e0315..2c3e6a4 100644
--- a/source/ChromeDevTools/Protocol/DOM/MoveToCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Moves node into the new container, places it before the given anchor.
 	/// </summary>
 	[Command(ProtocolName.DOM.MoveTo)]
+	[SupportedBy("Chrome")]
 	public class MoveToCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommandResponse.cs
new file mode 100644
index 0000000..d5bfa9a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/MoveToCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Moves node into the new container, places it before the given anchor.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.MoveTo)]
+	[SupportedBy("Chrome")]
+	public class MoveToCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets New id of the moved node.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/Node.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs
similarity index 98%
rename from source/ChromeDevTools/Protocol/DOM/Node.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs
index 9dd185c..8475ce8 100644
--- a/source/ChromeDevTools/Protocol/DOM/Node.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/Node.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Node
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/PerformSearchCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/DOM/PerformSearchCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs
index c31abb9..9aa34b8 100644
--- a/source/ChromeDevTools/Protocol/DOM/PerformSearchCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.
 	/// </summary>
 	[Command(ProtocolName.DOM.PerformSearch)]
+	[SupportedBy("Chrome")]
 	public class PerformSearchCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommandResponse.cs
new file mode 100644
index 0000000..c318740
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PerformSearchCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.PerformSearch)]
+	[SupportedBy("Chrome")]
+	public class PerformSearchCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Unique search session identifier.
+		/// </summary>
+		public string SearchId { get; set; }
+		/// <summary>
+		/// Gets or sets Number of search results.
+		/// </summary>
+		public long ResultCount { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementAddedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementAddedEvent.cs
new file mode 100644
index 0000000..8014eec
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementAddedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Called when a pseudo element is added to an element.
+	/// </summary>
+	[Event(ProtocolName.DOM.PseudoElementAdded)]
+	[SupportedBy("Chrome")]
+	public class PseudoElementAddedEvent
+	{
+		/// <summary>
+		/// Gets or sets Pseudo element's parent element id.
+		/// </summary>
+		public long ParentId { get; set; }
+		/// <summary>
+		/// Gets or sets The added pseudo element.
+		/// </summary>
+		public Node PseudoElement { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementRemovedEvent.cs
new file mode 100644
index 0000000..350e442
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoElementRemovedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Called when a pseudo element is removed from an element.
+	/// </summary>
+	[Event(ProtocolName.DOM.PseudoElementRemoved)]
+	[SupportedBy("Chrome")]
+	public class PseudoElementRemovedEvent
+	{
+		/// <summary>
+		/// Gets or sets Pseudo element's parent element id.
+		/// </summary>
+		public long ParentId { get; set; }
+		/// <summary>
+		/// Gets or sets The removed pseudo element id.
+		/// </summary>
+		public long PseudoElementId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/PseudoType.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoType.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/PseudoType.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/PseudoType.cs
index cada0f4..a16cfa1 100644
--- a/source/ChromeDevTools/Protocol/DOM/PseudoType.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PseudoType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM{
 	/// <summary>
 	/// Pseudo element type.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs
new file mode 100644
index 0000000..4c18a67
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Requests that the node is sent to the caller given its path. // FIXME, use XPath
+	/// </summary>
+	[Command(ProtocolName.DOM.PushNodeByPathToFrontend)]
+	[SupportedBy("Chrome")]
+	public class PushNodeByPathToFrontendCommand
+	{
+		/// <summary>
+		/// Gets or sets Path to node in the proprietary format.
+		/// </summary>
+		public string Path { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommandResponse.cs
new file mode 100644
index 0000000..9e7eebb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodeByPathToFrontendCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Requests that the node is sent to the caller given its path. // FIXME, use XPath
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.PushNodeByPathToFrontend)]
+	[SupportedBy("Chrome")]
+	public class PushNodeByPathToFrontendCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Id of the node for given path.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/PushNodesByBackendIdsToFrontendCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/PushNodesByBackendIdsToFrontendCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs
index 43d25e3..4fa0a09 100644
--- a/source/ChromeDevTools/Protocol/DOM/PushNodesByBackendIdsToFrontendCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Requests that a batch of nodes is sent to the caller given their backend node ids.
 	/// </summary>
 	[Command(ProtocolName.DOM.PushNodesByBackendIdsToFrontend)]
+	[SupportedBy("Chrome")]
 	public class PushNodesByBackendIdsToFrontendCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs
index 8ee3d27..880f370 100644
--- a/source/ChromeDevTools/Protocol/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/PushNodesByBackendIdsToFrontendCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Requests that a batch of nodes is sent to the caller given their backend node ids.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.PushNodesByBackendIdsToFrontend)]
+	[SupportedBy("Chrome")]
 	public class PushNodesByBackendIdsToFrontendCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs
new file mode 100644
index 0000000..3b4bb84
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Executes <code>querySelectorAll</code> on a given node.
+	/// </summary>
+	[Command(ProtocolName.DOM.QuerySelectorAll)]
+	[SupportedBy("Chrome")]
+	public class QuerySelectorAllCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to query upon.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Selector string.
+		/// </summary>
+		public string Selector { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommandResponse.cs
new file mode 100644
index 0000000..ed18331
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorAllCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Executes <code>querySelectorAll</code> on a given node.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.QuerySelectorAll)]
+	[SupportedBy("Chrome")]
+	public class QuerySelectorAllCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Query selector result.
+		/// </summary>
+		public long[] NodeIds { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs
new file mode 100644
index 0000000..83d9442
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Executes <code>querySelector</code> on a given node.
+	/// </summary>
+	[Command(ProtocolName.DOM.QuerySelector)]
+	[SupportedBy("Chrome")]
+	public class QuerySelectorCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to query upon.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Selector string.
+		/// </summary>
+		public string Selector { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommandResponse.cs
new file mode 100644
index 0000000..3983d6b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/QuerySelectorCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Executes <code>querySelector</code> on a given node.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.QuerySelector)]
+	[SupportedBy("Chrome")]
+	public class QuerySelectorCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Query selector result.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/RGBA.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RGBA.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/DOM/RGBA.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/RGBA.cs
index ba5cbcd..144ed34 100644
--- a/source/ChromeDevTools/Protocol/DOM/RGBA.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RGBA.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// A structure holding an RGBA color.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class RGBA
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/Rect.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/Rect.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/Rect.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/Rect.cs
index d2d1d80..25fd809 100644
--- a/source/ChromeDevTools/Protocol/DOM/Rect.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/Rect.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Rectangle.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Rect
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs
new file mode 100644
index 0000000..f4633d1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Re-does the last undone action.
+	/// </summary>
+	[Command(ProtocolName.DOM.Redo)]
+	[SupportedBy("Chrome")]
+	public class RedoCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommandResponse.cs
new file mode 100644
index 0000000..47b38e5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RedoCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Re-does the last undone action.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.Redo)]
+	[SupportedBy("Chrome")]
+	public class RedoCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs
new file mode 100644
index 0000000..e37d0f4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Removes attribute with given name from an element with given id.
+	/// </summary>
+	[Command(ProtocolName.DOM.RemoveAttribute)]
+	[SupportedBy("Chrome")]
+	public class RemoveAttributeCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the element to remove attribute from.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Name of the attribute to remove.
+		/// </summary>
+		public string Name { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommandResponse.cs
new file mode 100644
index 0000000..ffe2202
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveAttributeCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Removes attribute with given name from an element with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.RemoveAttribute)]
+	[SupportedBy("Chrome")]
+	public class RemoveAttributeCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs
new file mode 100644
index 0000000..1460cef
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Removes node with given id.
+	/// </summary>
+	[Command(ProtocolName.DOM.RemoveNode)]
+	[SupportedBy("Chrome")]
+	public class RemoveNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to remove.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommandResponse.cs
new file mode 100644
index 0000000..c8bfecb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RemoveNodeCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Removes node with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.RemoveNode)]
+	[SupportedBy("Chrome")]
+	public class RemoveNodeCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
new file mode 100644
index 0000000..c002aaa
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth.
+	/// </summary>
+	[Command(ProtocolName.DOM.RequestChildNodes)]
+	[SupportedBy("Chrome")]
+	public class RequestChildNodesCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to get children for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.
+		/// </summary>
+		public long Depth { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommandResponse.cs
new file mode 100644
index 0000000..24b7680
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestChildNodesCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.RequestChildNodes)]
+	[SupportedBy("Chrome")]
+	public class RequestChildNodesCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs
new file mode 100644
index 0000000..ee26ae9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications.
+	/// </summary>
+	[Command(ProtocolName.DOM.RequestNode)]
+	[SupportedBy("Chrome")]
+	public class RequestNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets JavaScript object id to convert into node.
+		/// </summary>
+		public string ObjectId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommandResponse.cs
new file mode 100644
index 0000000..f407b1e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/RequestNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.RequestNode)]
+	[SupportedBy("Chrome")]
+	public class RequestNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Node id for given object.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs
new file mode 100644
index 0000000..ce1e633
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Resolves JavaScript node object for given node id.
+	/// </summary>
+	[Command(ProtocolName.DOM.ResolveNode)]
+	[SupportedBy("Chrome")]
+	public class ResolveNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to resolve.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Symbolic group name that can be used to release multiple objects.
+		/// </summary>
+		public string ObjectGroup { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommandResponse.cs
new file mode 100644
index 0000000..ae45eec
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ResolveNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Resolves JavaScript node object for given node id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.ResolveNode)]
+	[SupportedBy("Chrome")]
+	public class ResolveNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets JavaScript object wrapper for given node.
+		/// </summary>
+		public Runtime.RemoteObject Object { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs
new file mode 100644
index 0000000..2366dbd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets attribute for an element with given id.
+	/// </summary>
+	[Command(ProtocolName.DOM.SetAttributeValue)]
+	[SupportedBy("Chrome")]
+	public class SetAttributeValueCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the element to set attribute for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute value.
+		/// </summary>
+		public string Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommandResponse.cs
new file mode 100644
index 0000000..8a8f4aa
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributeValueCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets attribute for an element with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.SetAttributeValue)]
+	[SupportedBy("Chrome")]
+	public class SetAttributeValueCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs
new file mode 100644
index 0000000..9a71ea7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs.
+	/// </summary>
+	[Command(ProtocolName.DOM.SetAttributesAsText)]
+	[SupportedBy("Chrome")]
+	public class SetAttributesAsTextCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the element to set attributes for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Text with a number of attributes. Will parse this text using HTML parser.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets Attribute name to replace with new attributes derived from text in case text parsed successfully.
+		/// </summary>
+		public string Name { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommandResponse.cs
new file mode 100644
index 0000000..f02db18
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetAttributesAsTextCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.SetAttributesAsText)]
+	[SupportedBy("Chrome")]
+	public class SetAttributesAsTextCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetChildNodesEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetChildNodesEvent.cs
new file mode 100644
index 0000000..82b0657
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetChildNodesEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids.
+	/// </summary>
+	[Event(ProtocolName.DOM.SetChildNodes)]
+	[SupportedBy("Chrome")]
+	public class SetChildNodesEvent
+	{
+		/// <summary>
+		/// Gets or sets Parent node id to populate with children.
+		/// </summary>
+		public long ParentId { get; set; }
+		/// <summary>
+		/// Gets or sets Child nodes array.
+		/// </summary>
+		public Node[] Nodes { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetFileInputFilesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/SetFileInputFilesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs
index 0a8305e..d5d7b76 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetFileInputFilesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Sets files for the given file input element.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetFileInputFiles)]
+	[SupportedBy("Chrome")]
 	public class SetFileInputFilesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetFileInputFilesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOM/SetFileInputFilesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommandResponse.cs
index 5aa367a..9b0fb57 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetFileInputFilesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetFileInputFilesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Sets files for the given file input element.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetFileInputFiles)]
+	[SupportedBy("Chrome")]
 	public class SetFileInputFilesCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetInspectModeEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeEnabledCommand.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/DOM/SetInspectModeEnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeEnabledCommand.cs
index ae3f9a6..6f16acf 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetInspectModeEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeEnabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspectNodeRequested' event upon element selection.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetInspectModeEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetInspectModeEnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetInspectModeEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeEnabledCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/SetInspectModeEnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeEnabledCommandResponse.cs
index 2a64fdb..ca44052 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetInspectModeEnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectModeEnabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspectNodeRequested' event upon element selection.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetInspectModeEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetInspectModeEnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetInspectedNodeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/SetInspectedNodeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs
index 6eca3fa..382b261 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetInspectedNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).
 	/// </summary>
 	[Command(ProtocolName.DOM.SetInspectedNode)]
+	[SupportedBy("Chrome")]
 	public class SetInspectedNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetInspectedNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/DOM/SetInspectedNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommandResponse.cs
index 1d0e4a4..46c288b 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetInspectedNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetInspectedNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetInspectedNode)]
+	[SupportedBy("Chrome")]
 	public class SetInspectedNodeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs
new file mode 100644
index 0000000..71b11a4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets node name for a node with given id.
+	/// </summary>
+	[Command(ProtocolName.DOM.SetNodeName)]
+	[SupportedBy("Chrome")]
+	public class SetNodeNameCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to set name for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets New node's name.
+		/// </summary>
+		public string Name { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommandResponse.cs
new file mode 100644
index 0000000..0e0777e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeNameCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets node name for a node with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.SetNodeName)]
+	[SupportedBy("Chrome")]
+	public class SetNodeNameCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets New node's id.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs
new file mode 100644
index 0000000..f844056
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets node value for a node with given id.
+	/// </summary>
+	[Command(ProtocolName.DOM.SetNodeValue)]
+	[SupportedBy("Chrome")]
+	public class SetNodeValueCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to set value for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets New node's value.
+		/// </summary>
+		public string Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommandResponse.cs
new file mode 100644
index 0000000..b70a804
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetNodeValueCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets node value for a node with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.SetNodeValue)]
+	[SupportedBy("Chrome")]
+	public class SetNodeValueCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs
new file mode 100644
index 0000000..1c1fd49
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets node HTML markup, returns new node id.
+	/// </summary>
+	[Command(ProtocolName.DOM.SetOuterHTML)]
+	[SupportedBy("Chrome")]
+	public class SetOuterHTMLCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to set markup for.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Outer HTML markup to set.
+		/// </summary>
+		public string OuterHTML { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommandResponse.cs
new file mode 100644
index 0000000..4b681ab
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/SetOuterHTMLCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Sets node HTML markup, returns new node id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.SetOuterHTML)]
+	[SupportedBy("Chrome")]
+	public class SetOuterHTMLCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPoppedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPoppedEvent.cs
new file mode 100644
index 0000000..f6dad4b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPoppedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Called when shadow root is popped from the element.
+	/// </summary>
+	[Event(ProtocolName.DOM.ShadowRootPopped)]
+	[SupportedBy("Chrome")]
+	public class ShadowRootPoppedEvent
+	{
+		/// <summary>
+		/// Gets or sets Host element id.
+		/// </summary>
+		public long HostId { get; set; }
+		/// <summary>
+		/// Gets or sets Shadow root id.
+		/// </summary>
+		public long RootId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPushedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPushedEvent.cs
new file mode 100644
index 0000000..dea8f12
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootPushedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Called when shadow root is pushed into the element.
+	/// </summary>
+	[Event(ProtocolName.DOM.ShadowRootPushed)]
+	[SupportedBy("Chrome")]
+	public class ShadowRootPushedEvent
+	{
+		/// <summary>
+		/// Gets or sets Host element id.
+		/// </summary>
+		public long HostId { get; set; }
+		/// <summary>
+		/// Gets or sets Shadow root.
+		/// </summary>
+		public Node Root { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/ShadowRootType.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootType.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/DOM/ShadowRootType.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootType.cs
index 44a9b16..0631076 100644
--- a/source/ChromeDevTools/Protocol/DOM/ShadowRootType.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ShadowRootType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM{
 	/// <summary>
 	/// Shadow root type.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ShapeOutsideInfo.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/ShapeOutsideInfo.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/ShapeOutsideInfo.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOM/ShapeOutsideInfo.cs
index 625e7f0..d866fab 100644
--- a/source/ChromeDevTools/Protocol/DOM/ShapeOutsideInfo.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/ShapeOutsideInfo.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
 {
 	/// <summary>
 	/// CSS Shape Outside details.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ShapeOutsideInfo
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs
new file mode 100644
index 0000000..0694c1e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Undoes the last performed action.
+	/// </summary>
+	[Command(ProtocolName.DOM.Undo)]
+	[SupportedBy("Chrome")]
+	public class UndoCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommandResponse.cs
new file mode 100644
index 0000000..69f984a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOM/UndoCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOM
+{
+	/// <summary>
+	/// Undoes the last performed action.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.Undo)]
+	[SupportedBy("Chrome")]
+	public class UndoCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/DOMBreakpointType.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/DOMBreakpointType.cs
new file mode 100644
index 0000000..8f0b58d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/DOMBreakpointType.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger{
+	/// <summary>
+	/// DOM breakpoint type.
+	/// </summary>
+	public enum DOMBreakpointType
+	{
+			Subtree_modified,
+			Attribute_modified,
+			Node_removed,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs
new file mode 100644
index 0000000..3e97412
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.RemoveDOMBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveDOMBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the node to remove breakpoint from.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Type of the breakpoint to remove.
+		/// </summary>
+		public string Type { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
new file mode 100644
index 0000000..b280362
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.RemoveDOMBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveDOMBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
index 825489f..5e9ed7d 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 {
 	/// <summary>
 	/// Removes breakpoint on particular DOM event.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveEventListenerBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class RemoveEventListenerBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
new file mode 100644
index 0000000..f3bc874
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Removes breakpoint on particular DOM event.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.RemoveEventListenerBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveEventListenerBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
index 2f20168..170fab4 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 {
 	/// <summary>
 	/// Removes breakpoint on particular native event.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveInstrumentationBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class RemoveInstrumentationBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
index 7ef6c8d..c929e28 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 {
 	/// <summary>
 	/// Removes breakpoint on particular native event.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.RemoveInstrumentationBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class RemoveInstrumentationBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs
new file mode 100644
index 0000000..6708f25
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Removes breakpoint from XMLHttpRequest.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.RemoveXHRBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveXHRBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Resource URL substring.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
new file mode 100644
index 0000000..4b2e5e1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Removes breakpoint from XMLHttpRequest.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.RemoveXHRBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveXHRBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs
new file mode 100644
index 0000000..7bc2ede
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular operation with DOM.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.SetDOMBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetDOMBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the node to set breakpoint on.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Type of the operation to stop upon.
+		/// </summary>
+		public string Type { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommandResponse.cs
new file mode 100644
index 0000000..25efaec
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetDOMBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular operation with DOM.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.SetDOMBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetDOMBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetEventListenerBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs
index 9388b35..1f5c97d 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetEventListenerBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on particular DOM event.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetEventListenerBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class SetEventListenerBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
new file mode 100644
index 0000000..bf53436
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular DOM event.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.SetEventListenerBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetEventListenerBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs
new file mode 100644
index 0000000..985ca8d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular native event.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.SetInstrumentationBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetInstrumentationBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Instrumentation name to stop on.
+		/// </summary>
+		public string EventName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
new file mode 100644
index 0000000..588fd57
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular native event.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.SetInstrumentationBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetInstrumentationBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs
new file mode 100644
index 0000000..f543fbd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on XMLHttpRequest.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.SetXHRBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetXHRBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Resource URL substring. All XHRs having this substring in the URL will get stopped upon.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommandResponse.cs
new file mode 100644
index 0000000..d85adae
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMDebugger/SetXHRBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on XMLHttpRequest.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.SetXHRBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetXHRBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs
new file mode 100644
index 0000000..9ba51da
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	/// <summary>
+	/// Disables storage tracking, prevents storage events from being sent to the client.
+	/// </summary>
+	[Command(ProtocolName.DOMStorage.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommandResponse.cs
new file mode 100644
index 0000000..409b8ef
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	/// <summary>
+	/// Disables storage tracking, prevents storage events from being sent to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMStorage.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemAddedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemAddedEvent.cs
new file mode 100644
index 0000000..ddb0b4e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemAddedEvent.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Event(ProtocolName.DOMStorage.DomStorageItemAdded)]
+	[SupportedBy("Chrome")]
+	public class DomStorageItemAddedEvent
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+		/// <summary>
+		/// Gets or sets Key
+		/// </summary>
+		public string Key { get; set; }
+		/// <summary>
+		/// Gets or sets NewValue
+		/// </summary>
+		public string NewValue { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemRemovedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemRemovedEvent.cs
new file mode 100644
index 0000000..0610cdc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemRemovedEvent.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Event(ProtocolName.DOMStorage.DomStorageItemRemoved)]
+	[SupportedBy("Chrome")]
+	public class DomStorageItemRemovedEvent
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+		/// <summary>
+		/// Gets or sets Key
+		/// </summary>
+		public string Key { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemUpdatedEvent.cs
new file mode 100644
index 0000000..e3321ab
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemUpdatedEvent.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Event(ProtocolName.DOMStorage.DomStorageItemUpdated)]
+	[SupportedBy("Chrome")]
+	public class DomStorageItemUpdatedEvent
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+		/// <summary>
+		/// Gets or sets Key
+		/// </summary>
+		public string Key { get; set; }
+		/// <summary>
+		/// Gets or sets OldValue
+		/// </summary>
+		public string OldValue { get; set; }
+		/// <summary>
+		/// Gets or sets NewValue
+		/// </summary>
+		public string NewValue { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemsClearedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemsClearedEvent.cs
new file mode 100644
index 0000000..5177568
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/DomStorageItemsClearedEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Event(ProtocolName.DOMStorage.DomStorageItemsCleared)]
+	[SupportedBy("Chrome")]
+	public class DomStorageItemsClearedEvent
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs
new file mode 100644
index 0000000..4a4a2c2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	/// <summary>
+	/// Enables storage tracking, storage events will now be delivered to the client.
+	/// </summary>
+	[Command(ProtocolName.DOMStorage.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommandResponse.cs
new file mode 100644
index 0000000..0c46071
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	/// <summary>
+	/// Enables storage tracking, storage events will now be delivered to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMStorage.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs
new file mode 100644
index 0000000..15e3021
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Command(ProtocolName.DOMStorage.GetDOMStorageItems)]
+	[SupportedBy("Chrome")]
+	public class GetDOMStorageItemsCommand
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommandResponse.cs
new file mode 100644
index 0000000..7cbdc58
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/GetDOMStorageItemsCommandResponse.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[CommandResponse(ProtocolName.DOMStorage.GetDOMStorageItems)]
+	[SupportedBy("Chrome")]
+	public class GetDOMStorageItemsCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Entries
+		/// </summary>
+		public string[][] Entries { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs
new file mode 100644
index 0000000..21a1f4b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommand.cs
@@ -0,0 +1,20 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Command(ProtocolName.DOMStorage.RemoveDOMStorageItem)]
+	[SupportedBy("Chrome")]
+	public class RemoveDOMStorageItemCommand
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+		/// <summary>
+		/// Gets or sets Key
+		/// </summary>
+		public string Key { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
new file mode 100644
index 0000000..9701634
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[CommandResponse(ProtocolName.DOMStorage.RemoveDOMStorageItem)]
+	[SupportedBy("Chrome")]
+	public class RemoveDOMStorageItemCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs
new file mode 100644
index 0000000..0ab1798
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommand.cs
@@ -0,0 +1,24 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[Command(ProtocolName.DOMStorage.SetDOMStorageItem)]
+	[SupportedBy("Chrome")]
+	public class SetDOMStorageItemCommand
+	{
+		/// <summary>
+		/// Gets or sets StorageId
+		/// </summary>
+		public StorageId StorageId { get; set; }
+		/// <summary>
+		/// Gets or sets Key
+		/// </summary>
+		public string Key { get; set; }
+		/// <summary>
+		/// Gets or sets Value
+		/// </summary>
+		public string Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommandResponse.cs
new file mode 100644
index 0000000..15a09da
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/SetDOMStorageItemCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	[CommandResponse(ProtocolName.DOMStorage.SetDOMStorageItem)]
+	[SupportedBy("Chrome")]
+	public class SetDOMStorageItemCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/DOMStorage/StorageId.cs b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/StorageId.cs
new file mode 100644
index 0000000..9e36aa9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/DOMStorage/StorageId.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DOMStorage
+{
+	/// <summary>
+	/// DOM Storage identifier.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class StorageId
+	{
+		/// <summary>
+		/// Gets or sets Security origin for the storage.
+		/// </summary>
+		public string SecurityOrigin { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the storage is local storage (not session storage).
+		/// </summary>
+		public bool IsLocalStorage { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/AddDatabaseEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Database/AddDatabaseEvent.cs
new file mode 100644
index 0000000..c735241
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/AddDatabaseEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	[Event(ProtocolName.Database.AddDatabase)]
+	[SupportedBy("Chrome")]
+	public class AddDatabaseEvent
+	{
+		/// <summary>
+		/// Gets or sets Database
+		/// </summary>
+		public Database Database { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/Database.cs b/source/ChromeDevTools/Protocol/Chrome/Database/Database.cs
new file mode 100644
index 0000000..e973b85
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/Database.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	/// <summary>
+	/// Database object.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Database
+	{
+		/// <summary>
+		/// Gets or sets Database ID.
+		/// </summary>
+		public string Id { get; set; }
+		/// <summary>
+		/// Gets or sets Database domain.
+		/// </summary>
+		public string Domain { get; set; }
+		/// <summary>
+		/// Gets or sets Database name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Database version.
+		/// </summary>
+		public string Version { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs
new file mode 100644
index 0000000..8d1cea2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	/// <summary>
+	/// Disables database tracking, prevents database events from being sent to the client.
+	/// </summary>
+	[Command(ProtocolName.Database.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommandResponse.cs
new file mode 100644
index 0000000..72695cd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	/// <summary>
+	/// Disables database tracking, prevents database events from being sent to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.Database.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs
new file mode 100644
index 0000000..01c7d1b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	/// <summary>
+	/// Enables database tracking, database events will now be delivered to the client.
+	/// </summary>
+	[Command(ProtocolName.Database.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommandResponse.cs
new file mode 100644
index 0000000..a50350c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	/// <summary>
+	/// Enables database tracking, database events will now be delivered to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.Database.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/Error.cs b/source/ChromeDevTools/Protocol/Chrome/Database/Error.cs
new file mode 100644
index 0000000..fc2dd32
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/Error.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	/// <summary>
+	/// Database error.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Error
+	{
+		/// <summary>
+		/// Gets or sets Error message.
+		/// </summary>
+		public string Message { get; set; }
+		/// <summary>
+		/// Gets or sets Error code.
+		/// </summary>
+		public long Code { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs
new file mode 100644
index 0000000..327d6c4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommand.cs
@@ -0,0 +1,20 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	[Command(ProtocolName.Database.ExecuteSQL)]
+	[SupportedBy("Chrome")]
+	public class ExecuteSQLCommand
+	{
+		/// <summary>
+		/// Gets or sets DatabaseId
+		/// </summary>
+		public string DatabaseId { get; set; }
+		/// <summary>
+		/// Gets or sets Query
+		/// </summary>
+		public string Query { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommandResponse.cs
new file mode 100644
index 0000000..0db6c57
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/ExecuteSQLCommandResponse.cs
@@ -0,0 +1,24 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	[CommandResponse(ProtocolName.Database.ExecuteSQL)]
+	[SupportedBy("Chrome")]
+	public class ExecuteSQLCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets ColumnNames
+		/// </summary>
+		public string[] ColumnNames { get; set; }
+		/// <summary>
+		/// Gets or sets Values
+		/// </summary>
+		public object[] Values { get; set; }
+		/// <summary>
+		/// Gets or sets SqlError
+		/// </summary>
+		public Error SqlError { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs
new file mode 100644
index 0000000..37c8bd7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	[Command(ProtocolName.Database.GetDatabaseTableNames)]
+	[SupportedBy("Chrome")]
+	public class GetDatabaseTableNamesCommand
+	{
+		/// <summary>
+		/// Gets or sets DatabaseId
+		/// </summary>
+		public string DatabaseId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommandResponse.cs
new file mode 100644
index 0000000..73ef114
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Database/GetDatabaseTableNamesCommandResponse.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Database
+{
+	[CommandResponse(ProtocolName.Database.GetDatabaseTableNames)]
+	[SupportedBy("Chrome")]
+	public class GetDatabaseTableNamesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets TableNames
+		/// </summary>
+		public string[] TableNames { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/AsyncOperation.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperation.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Debugger/AsyncOperation.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperation.cs
index d060876..0a4f240 100644
--- a/source/ChromeDevTools/Protocol/Debugger/AsyncOperation.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperation.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Information about the async operation.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class AsyncOperation
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/AsyncOperationCompletedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationCompletedEvent.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Debugger/AsyncOperationCompletedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationCompletedEvent.cs
index 6f03bfd..5850542 100644
--- a/source/ChromeDevTools/Protocol/Debugger/AsyncOperationCompletedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationCompletedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fired when an async operation is completed (while in a debugger stepping session).
 	/// </summary>
 	[Event(ProtocolName.Debugger.AsyncOperationCompleted)]
+	[SupportedBy("Chrome")]
 	public class AsyncOperationCompletedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/AsyncOperationStartedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationStartedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/AsyncOperationStartedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationStartedEvent.cs
index 9d3ebca..4884a51 100644
--- a/source/ChromeDevTools/Protocol/Debugger/AsyncOperationStartedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/AsyncOperationStartedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fired when an async operation is scheduled (while in a debugger stepping session).
 	/// </summary>
 	[Event(ProtocolName.Debugger.AsyncOperationStarted)]
+	[SupportedBy("Chrome")]
 	public class AsyncOperationStartedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakpointResolvedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakpointResolvedEvent.cs
new file mode 100644
index 0000000..323d71d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/BreakpointResolvedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Fired when breakpoint is resolved to an actual script and location.
+	/// </summary>
+	[Event(ProtocolName.Debugger.BreakpointResolved)]
+	[SupportedBy("Chrome")]
+	public class BreakpointResolvedEvent
+	{
+		/// <summary>
+		/// Gets or sets Breakpoint unique identifier.
+		/// </summary>
+		public string BreakpointId { get; set; }
+		/// <summary>
+		/// Gets or sets Actual breakpoint location.
+		/// </summary>
+		public Location Location { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/CallFrame.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/CallFrame.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Debugger/CallFrame.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/CallFrame.cs
index 0554b62..e87e2f5 100644
--- a/source/ChromeDevTools/Protocol/Debugger/CallFrame.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/CallFrame.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// JavaScript call frame. Array of call frames form the call stack.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CallFrame
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/CanSetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/CanSetScriptSourceCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Debugger/CanSetScriptSourceCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/CanSetScriptSourceCommand.cs
index 3ad188c..4def6f2 100644
--- a/source/ChromeDevTools/Protocol/Debugger/CanSetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/CanSetScriptSourceCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Always returns true.
 	/// </summary>
 	[Command(ProtocolName.Debugger.CanSetScriptSource)]
+	[SupportedBy("Chrome")]
 	public class CanSetScriptSourceCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/CanSetScriptSourceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/CanSetScriptSourceCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/CanSetScriptSourceCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/CanSetScriptSourceCommandResponse.cs
index 298ab95..2c27313 100644
--- a/source/ChromeDevTools/Protocol/Debugger/CanSetScriptSourceCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/CanSetScriptSourceCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Always returns true.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.CanSetScriptSource)]
+	[SupportedBy("Chrome")]
 	public class CanSetScriptSourceCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/CollectionEntry.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/CollectionEntry.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Debugger/CollectionEntry.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/CollectionEntry.cs
index e712df4..0747675 100644
--- a/source/ChromeDevTools/Protocol/Debugger/CollectionEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/CollectionEntry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Collection entry.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CollectionEntry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/CompileScriptCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/CompileScriptCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Debugger/CompileScriptCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/CompileScriptCommand.cs
index 63ad0d7..a22f031 100644
--- a/source/ChromeDevTools/Protocol/Debugger/CompileScriptCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/CompileScriptCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Compiles expression.
 	/// </summary>
 	[Command(ProtocolName.Debugger.CompileScript)]
+	[SupportedBy("Chrome")]
 	public class CompileScriptCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/CompileScriptCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/CompileScriptCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Debugger/CompileScriptCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/CompileScriptCommandResponse.cs
index a1e480e..686164e 100644
--- a/source/ChromeDevTools/Protocol/Debugger/CompileScriptCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/CompileScriptCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Compiles expression.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.CompileScript)]
+	[SupportedBy("Chrome")]
 	public class CompileScriptCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/ContinueToLocationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Debugger/ContinueToLocationCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
index 83fa3d9..c41368b 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ContinueToLocationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Continues execution until specific location is reached.
 	/// </summary>
 	[Command(ProtocolName.Debugger.ContinueToLocation)]
+	[SupportedBy("Chrome")]
 	public class ContinueToLocationCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommandResponse.cs
new file mode 100644
index 0000000..aa3c947
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ContinueToLocationCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Continues execution until specific location is reached.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.ContinueToLocation)]
+	[SupportedBy("Chrome")]
+	public class ContinueToLocationCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs
new file mode 100644
index 0000000..be4789a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Disables debugger for given page.
+	/// </summary>
+	[Command(ProtocolName.Debugger.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommandResponse.cs
new file mode 100644
index 0000000..6ab912f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Disables debugger for given page.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/DisablePromiseTrackerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisablePromiseTrackerCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/DisablePromiseTrackerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/DisablePromiseTrackerCommand.cs
index 9c8d5b4..850f381 100644
--- a/source/ChromeDevTools/Protocol/Debugger/DisablePromiseTrackerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisablePromiseTrackerCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Disables promise tracking.
 	/// </summary>
 	[Command(ProtocolName.Debugger.DisablePromiseTracker)]
+	[SupportedBy("Chrome")]
 	public class DisablePromiseTrackerCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/DisablePromiseTrackerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisablePromiseTrackerCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Debugger/DisablePromiseTrackerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/DisablePromiseTrackerCommandResponse.cs
index acf972c..f3270b5 100644
--- a/source/ChromeDevTools/Protocol/Debugger/DisablePromiseTrackerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/DisablePromiseTrackerCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Disables promise tracking.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.DisablePromiseTracker)]
+	[SupportedBy("Chrome")]
 	public class DisablePromiseTrackerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs
new file mode 100644
index 0000000..7303c6d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
+	/// </summary>
+	[Command(ProtocolName.Debugger.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommandResponse.cs
new file mode 100644
index 0000000..6e085b6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/EnablePromiseTrackerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Debugger/EnablePromiseTrackerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommand.cs
index c5f3568..4c473d4 100644
--- a/source/ChromeDevTools/Protocol/Debugger/EnablePromiseTrackerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Enables promise tracking, information about <code>Promise</code>s created or updated will now be stored on the backend.
 	/// </summary>
 	[Command(ProtocolName.Debugger.EnablePromiseTracker)]
+	[SupportedBy("Chrome")]
 	public class EnablePromiseTrackerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/EnablePromiseTrackerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Debugger/EnablePromiseTrackerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommandResponse.cs
index 3592773..efeece1 100644
--- a/source/ChromeDevTools/Protocol/Debugger/EnablePromiseTrackerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EnablePromiseTrackerCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Enables promise tracking, information about <code>Promise</code>s created or updated will now be stored on the backend.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.EnablePromiseTracker)]
+	[SupportedBy("Chrome")]
 	public class EnablePromiseTrackerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/EvaluateOnCallFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Debugger/EvaluateOnCallFrameCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
index 031fff7..5627af5 100644
--- a/source/ChromeDevTools/Protocol/Debugger/EvaluateOnCallFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Evaluates expression on a given call frame.
 	/// </summary>
 	[Command(ProtocolName.Debugger.EvaluateOnCallFrame)]
+	[SupportedBy("Chrome")]
 	public class EvaluateOnCallFrameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/EvaluateOnCallFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Debugger/EvaluateOnCallFrameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs
index 89a19d3..d4b0d87 100644
--- a/source/ChromeDevTools/Protocol/Debugger/EvaluateOnCallFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/EvaluateOnCallFrameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Evaluates expression on a given call frame.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.EvaluateOnCallFrame)]
+	[SupportedBy("Chrome")]
 	public class EvaluateOnCallFrameCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/ExceptionDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ExceptionDetails.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Debugger/ExceptionDetails.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/ExceptionDetails.cs
index ebe9c1e..5fedada 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ExceptionDetails.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ExceptionDetails.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Detailed information on exception (or error) that was thrown during script compilation or execution.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ExceptionDetails
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/FlushAsyncOperationEventsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/FlushAsyncOperationEventsCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Debugger/FlushAsyncOperationEventsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/FlushAsyncOperationEventsCommand.cs
index 7feb71e..d8436cd 100644
--- a/source/ChromeDevTools/Protocol/Debugger/FlushAsyncOperationEventsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/FlushAsyncOperationEventsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fires pending <code>asyncOperationStarted</code> events (if any), as if a debugger stepping session has just been started.
 	/// </summary>
 	[Command(ProtocolName.Debugger.FlushAsyncOperationEvents)]
+	[SupportedBy("Chrome")]
 	public class FlushAsyncOperationEventsCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/FlushAsyncOperationEventsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/FlushAsyncOperationEventsCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Debugger/FlushAsyncOperationEventsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/FlushAsyncOperationEventsCommandResponse.cs
index b64d490..ba46bc7 100644
--- a/source/ChromeDevTools/Protocol/Debugger/FlushAsyncOperationEventsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/FlushAsyncOperationEventsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fires pending <code>asyncOperationStarted</code> events (if any), as if a debugger stepping session has just been started.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.FlushAsyncOperationEvents)]
+	[SupportedBy("Chrome")]
 	public class FlushAsyncOperationEventsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/FunctionDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/FunctionDetails.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Debugger/FunctionDetails.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/FunctionDetails.cs
index 5c07a7d..94005bc 100644
--- a/source/ChromeDevTools/Protocol/Debugger/FunctionDetails.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/FunctionDetails.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Information about the function.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class FunctionDetails
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GeneratorObjectDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GeneratorObjectDetails.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Debugger/GeneratorObjectDetails.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GeneratorObjectDetails.cs
index f68ee91..f7f468e 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GeneratorObjectDetails.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GeneratorObjectDetails.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Information about the generator object.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class GeneratorObjectDetails
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetBacktraceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Debugger/GetBacktraceCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommand.cs
index ffac48b..e55e617 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetBacktraceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns call stack including variables changed since VM was paused. VM must be paused.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetBacktrace)]
+	[SupportedBy("Chrome")]
 	public class GetBacktraceCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetBacktraceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Debugger/GetBacktraceCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommandResponse.cs
index b99c8c1..d6429f7 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetBacktraceCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetBacktraceCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns call stack including variables changed since VM was paused. VM must be paused.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetBacktrace)]
+	[SupportedBy("Chrome")]
 	public class GetBacktraceCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetCollectionEntriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetCollectionEntriesCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/GetCollectionEntriesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetCollectionEntriesCommand.cs
index e77d3b8..b5c990f 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetCollectionEntriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetCollectionEntriesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns entries of given collection.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetCollectionEntries)]
+	[SupportedBy("Chrome")]
 	public class GetCollectionEntriesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetCollectionEntriesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetCollectionEntriesCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/GetCollectionEntriesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetCollectionEntriesCommandResponse.cs
index a3ad542..14251d2 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetCollectionEntriesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetCollectionEntriesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns entries of given collection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetCollectionEntries)]
+	[SupportedBy("Chrome")]
 	public class GetCollectionEntriesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetFunctionDetailsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/GetFunctionDetailsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommand.cs
index e822568..af920c2 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetFunctionDetailsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns detailed information on given function.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetFunctionDetails)]
+	[SupportedBy("Chrome")]
 	public class GetFunctionDetailsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommandResponse.cs
new file mode 100644
index 0000000..510c66c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetFunctionDetailsCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Returns detailed information on given function.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.GetFunctionDetails)]
+	[SupportedBy("Chrome")]
+	public class GetFunctionDetailsCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Information about the function.
+		/// </summary>
+		public FunctionDetails Details { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetGeneratorObjectDetailsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetGeneratorObjectDetailsCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/GetGeneratorObjectDetailsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetGeneratorObjectDetailsCommand.cs
index 4802c33..ed06491 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetGeneratorObjectDetailsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetGeneratorObjectDetailsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns detailed information on given generator object.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetGeneratorObjectDetails)]
+	[SupportedBy("Chrome")]
 	public class GetGeneratorObjectDetailsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetGeneratorObjectDetailsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetGeneratorObjectDetailsCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Debugger/GetGeneratorObjectDetailsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetGeneratorObjectDetailsCommandResponse.cs
index 17dfc18..4a6c37a 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetGeneratorObjectDetailsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetGeneratorObjectDetailsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns detailed information on given generator object.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetGeneratorObjectDetails)]
+	[SupportedBy("Chrome")]
 	public class GetGeneratorObjectDetailsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetPromiseByIdCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Debugger/GetPromiseByIdCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommand.cs
index f5a7e03..0ec1cde 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetPromiseByIdCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns <code>Promise</code> with specified ID.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetPromiseById)]
+	[SupportedBy("Chrome")]
 	public class GetPromiseByIdCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetPromiseByIdCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Debugger/GetPromiseByIdCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommandResponse.cs
index ba2c567..61f84da 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetPromiseByIdCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromiseByIdCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns <code>Promise</code> with specified ID.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetPromiseById)]
+	[SupportedBy("Chrome")]
 	public class GetPromiseByIdCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetPromisesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromisesCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/GetPromisesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromisesCommand.cs
index 51bde2e..5804ca2 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetPromisesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromisesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns detailed information about all <code>Promise</code>s that were created or updated after the <code>enablePromiseTracker</code> command, and have not been garbage collected yet.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetPromises)]
+	[SupportedBy("Chrome")]
 	public class GetPromisesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetPromisesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromisesCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Debugger/GetPromisesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromisesCommandResponse.cs
index 4f90100..2ca5674 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetPromisesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetPromisesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Returns detailed information about all <code>Promise</code>s that were created or updated after the <code>enablePromiseTracker</code> command, and have not been garbage collected yet.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetPromises)]
+	[SupportedBy("Chrome")]
 	public class GetPromisesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs
new file mode 100644
index 0000000..5873ee4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Returns source for the script with given id.
+	/// </summary>
+	[Command(ProtocolName.Debugger.GetScriptSource)]
+	[SupportedBy("Chrome")]
+	public class GetScriptSourceCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the script to get source for.
+		/// </summary>
+		public string ScriptId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommandResponse.cs
new file mode 100644
index 0000000..468120f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetScriptSourceCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Returns source for the script with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.GetScriptSource)]
+	[SupportedBy("Chrome")]
+	public class GetScriptSourceCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Script source.
+		/// </summary>
+		public string ScriptSource { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetStepInPositionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Debugger/GetStepInPositionsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommand.cs
index eb22847..1d76aed 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetStepInPositionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Lists all positions where step-in is possible for a current statement in a specified call frame
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetStepInPositions)]
+	[SupportedBy("Chrome")]
 	public class GetStepInPositionsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetStepInPositionsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Debugger/GetStepInPositionsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommandResponse.cs
index 30948a7..d3ce155 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetStepInPositionsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GetStepInPositionsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Lists all positions where step-in is possible for a current statement in a specified call frame
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetStepInPositions)]
+	[SupportedBy("Chrome")]
 	public class GetStepInPositionsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs
new file mode 100644
index 0000000..bd97c24
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/GlobalObjectClearedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload.
+	/// </summary>
+	[Event(ProtocolName.Debugger.GlobalObjectCleared)]
+	[SupportedBy("Chrome")]
+	public class GlobalObjectClearedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/Location.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/Location.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Debugger/Location.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/Location.cs
index 8f44f1b..7fa46bd 100644
--- a/source/ChromeDevTools/Protocol/Debugger/Location.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/Location.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Location in the source code.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Location
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs
new file mode 100644
index 0000000..0370295
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Stops on the next JavaScript statement.
+	/// </summary>
+	[Command(ProtocolName.Debugger.Pause)]
+	[SupportedBy("Chrome")]
+	public class PauseCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommandResponse.cs
new file mode 100644
index 0000000..eb61992
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PauseCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Stops on the next JavaScript statement.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.Pause)]
+	[SupportedBy("Chrome")]
+	public class PauseCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/PausedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/Debugger/PausedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs
index cf87898..981b471 100644
--- a/source/ChromeDevTools/Protocol/Debugger/PausedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PausedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
 	/// </summary>
 	[Event(ProtocolName.Debugger.Paused)]
+	[SupportedBy("Chrome")]
 	public class PausedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/PromiseDetails.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseDetails.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Debugger/PromiseDetails.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseDetails.cs
index 9f92485..5416a8f 100644
--- a/source/ChromeDevTools/Protocol/Debugger/PromiseDetails.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseDetails.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Information about the promise.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PromiseDetails
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/PromiseUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseUpdatedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Debugger/PromiseUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseUpdatedEvent.cs
index daeab39..2f78e1d 100644
--- a/source/ChromeDevTools/Protocol/Debugger/PromiseUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/PromiseUpdatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fired when a <code>Promise</code> is created, updated or garbage collected.
 	/// </summary>
 	[Event(ProtocolName.Debugger.PromiseUpdated)]
+	[SupportedBy("Chrome")]
 	public class PromiseUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/RemoveAsyncOperationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveAsyncOperationBreakpointCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/RemoveAsyncOperationBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveAsyncOperationBreakpointCommand.cs
index fb2016b..1bd8d99 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RemoveAsyncOperationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveAsyncOperationBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Removes AsyncOperation breakpoint.
 	/// </summary>
 	[Command(ProtocolName.Debugger.RemoveAsyncOperationBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class RemoveAsyncOperationBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs
index 3e32579..c4380d2 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveAsyncOperationBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Removes AsyncOperation breakpoint.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.RemoveAsyncOperationBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class RemoveAsyncOperationBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs
new file mode 100644
index 0000000..99a401e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Removes JavaScript breakpoint.
+	/// </summary>
+	[Command(ProtocolName.Debugger.RemoveBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets BreakpointId
+		/// </summary>
+		public string BreakpointId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommandResponse.cs
new file mode 100644
index 0000000..ad0a70b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RemoveBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Removes JavaScript breakpoint.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.RemoveBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class RemoveBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/RestartFrameCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/RestartFrameCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs
index f6c1ca4..bad86b7 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RestartFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Restarts particular call frame from the beginning.
 	/// </summary>
 	[Command(ProtocolName.Debugger.RestartFrame)]
+	[SupportedBy("Chrome")]
 	public class RestartFrameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/RestartFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Debugger/RestartFrameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs
index 9073315..22be5f9 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RestartFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RestartFrameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Restarts particular call frame from the beginning.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.RestartFrame)]
+	[SupportedBy("Chrome")]
 	public class RestartFrameCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs
new file mode 100644
index 0000000..e3a1483
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Resumes JavaScript execution.
+	/// </summary>
+	[Command(ProtocolName.Debugger.Resume)]
+	[SupportedBy("Chrome")]
+	public class ResumeCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommandResponse.cs
new file mode 100644
index 0000000..1c0d07c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumeCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Resumes JavaScript execution.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.Resume)]
+	[SupportedBy("Chrome")]
+	public class ResumeCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumedEvent.cs
new file mode 100644
index 0000000..1f4d7ae
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ResumedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Fired when the virtual machine resumed execution.
+	/// </summary>
+	[Event(ProtocolName.Debugger.Resumed)]
+	[SupportedBy("Chrome")]
+	public class ResumedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/RunScriptCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Debugger/RunScriptCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommand.cs
index 7aa3d65..c7019ce 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RunScriptCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Runs script with given id in a given context.
 	/// </summary>
 	[Command(ProtocolName.Debugger.RunScript)]
+	[SupportedBy("Chrome")]
 	public class RunScriptCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/RunScriptCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Debugger/RunScriptCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommandResponse.cs
index 1a0d085..86a4756 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RunScriptCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/RunScriptCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Runs script with given id in a given context.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.RunScript)]
+	[SupportedBy("Chrome")]
 	public class RunScriptCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs
new file mode 100644
index 0000000..58a0d7f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/Scope.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Scope description.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Scope
+	{
+		/// <summary>
+		/// Gets or sets Scope type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties.
+		/// </summary>
+		public Runtime.RemoteObject Object { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/ScriptFailedToParseEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Debugger/ScriptFailedToParseEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs
index 9990001..db5df89 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ScriptFailedToParseEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptFailedToParseEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fired when virtual machine fails to parse the script.
 	/// </summary>
 	[Event(ProtocolName.Debugger.ScriptFailedToParse)]
+	[SupportedBy("Chrome")]
 	public class ScriptFailedToParseEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/ScriptParsedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Debugger/ScriptParsedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs
index 76019d7..2958c82 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ScriptParsedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/ScriptParsedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
 	/// </summary>
 	[Event(ProtocolName.Debugger.ScriptParsed)]
+	[SupportedBy("Chrome")]
 	public class ScriptParsedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs
new file mode 100644
index 0000000..bfddeb7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommand.cs
@@ -0,0 +1,31 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Searches for given string in script content.
+	/// </summary>
+	[Command(ProtocolName.Debugger.SearchInContent)]
+	[SupportedBy("Chrome")]
+	public class SearchInContentCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the script to search in.
+		/// </summary>
+		public string ScriptId { get; set; }
+		/// <summary>
+		/// Gets or sets String to search for.
+		/// </summary>
+		public string Query { get; set; }
+		/// <summary>
+		/// Gets or sets If true, search is case sensitive.
+		/// </summary>
+		public bool CaseSensitive { get; set; }
+		/// <summary>
+		/// Gets or sets If true, treats string parameter as regex.
+		/// </summary>
+		public bool IsRegex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SearchInContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/SearchInContentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommandResponse.cs
index 029f29a..24ef2a6 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SearchInContentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchInContentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Searches for given string in script content.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SearchInContent)]
+	[SupportedBy("Chrome")]
 	public class SearchInContentCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SearchMatch.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchMatch.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/SearchMatch.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SearchMatch.cs
index 9301e4a..07c0da9 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SearchMatch.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SearchMatch.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Search match for resource.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class SearchMatch
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetAsyncCallStackDepthCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Debugger/SetAsyncCallStackDepthCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs
index 40ccd5f..dcdb20d 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetAsyncCallStackDepthCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Enables or disables async call stacks tracking.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetAsyncCallStackDepth)]
+	[SupportedBy("Chrome")]
 	public class SetAsyncCallStackDepthCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetAsyncCallStackDepthCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Debugger/SetAsyncCallStackDepthCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommandResponse.cs
index b7e8634..4c3e7e9 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetAsyncCallStackDepthCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncCallStackDepthCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Enables or disables async call stacks tracking.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetAsyncCallStackDepth)]
+	[SupportedBy("Chrome")]
 	public class SetAsyncCallStackDepthCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetAsyncOperationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncOperationBreakpointCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/SetAsyncOperationBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncOperationBreakpointCommand.cs
index 1658c4d..8767bec 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetAsyncOperationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncOperationBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Sets breakpoint on AsyncOperation callback handler.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetAsyncOperationBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class SetAsyncOperationBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetAsyncOperationBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncOperationBreakpointCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Debugger/SetAsyncOperationBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncOperationBreakpointCommandResponse.cs
index 1fe7397..63c807b 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetAsyncOperationBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetAsyncOperationBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Sets breakpoint on AsyncOperation callback handler.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetAsyncOperationBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class SetAsyncOperationBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointByUrlCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Debugger/SetBreakpointByUrlCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs
index 7fa3e6f..d27e56c 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointByUrlCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpointByUrl)]
+	[SupportedBy("Chrome")]
 	public class SetBreakpointByUrlCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommandResponse.cs
new file mode 100644
index 0000000..a2509da
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointByUrlCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.SetBreakpointByUrl)]
+	[SupportedBy("Chrome")]
+	public class SetBreakpointByUrlCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Id of the created breakpoint for further reference.
+		/// </summary>
+		public string BreakpointId { get; set; }
+		/// <summary>
+		/// Gets or sets List of the locations this breakpoint resolved into upon addition.
+		/// </summary>
+		public Location[] Locations { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Debugger/SetBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs
index 217ef9c..18dc15e 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Sets JavaScript breakpoint at a given location.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpoint)]
+	[SupportedBy("Chrome")]
 	public class SetBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommandResponse.cs
new file mode 100644
index 0000000..8128133
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Sets JavaScript breakpoint at a given location.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.SetBreakpoint)]
+	[SupportedBy("Chrome")]
+	public class SetBreakpointCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Id of the created breakpoint for further reference.
+		/// </summary>
+		public string BreakpointId { get; set; }
+		/// <summary>
+		/// Gets or sets Location this breakpoint resolved into.
+		/// </summary>
+		public Location ActualLocation { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs
new file mode 100644
index 0000000..acdb2c8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Activates / deactivates all breakpoints on the page.
+	/// </summary>
+	[Command(ProtocolName.Debugger.SetBreakpointsActive)]
+	[SupportedBy("Chrome")]
+	public class SetBreakpointsActiveCommand
+	{
+		/// <summary>
+		/// Gets or sets New value for breakpoints active state.
+		/// </summary>
+		public bool Active { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommandResponse.cs
new file mode 100644
index 0000000..163fbb6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetBreakpointsActiveCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Activates / deactivates all breakpoints on the page.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.SetBreakpointsActive)]
+	[SupportedBy("Chrome")]
+	public class SetBreakpointsActiveCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs
new file mode 100644
index 0000000..480b053
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.
+	/// </summary>
+	[Command(ProtocolName.Debugger.SetPauseOnExceptions)]
+	[SupportedBy("Chrome")]
+	public class SetPauseOnExceptionsCommand
+	{
+		/// <summary>
+		/// Gets or sets Pause on exceptions mode.
+		/// </summary>
+		public string State { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommandResponse.cs
new file mode 100644
index 0000000..9781b47
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetPauseOnExceptionsCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.SetPauseOnExceptions)]
+	[SupportedBy("Chrome")]
+	public class SetPauseOnExceptionsCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Debugger/SetScriptSourceCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
index 7bca9df..981aa7c 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Edits JavaScript source live.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetScriptSource)]
+	[SupportedBy("Chrome")]
 	public class SetScriptSourceCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetScriptSourceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Debugger/SetScriptSourceCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs
index 0d4c8b8..11f304a 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetScriptSourceCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Edits JavaScript source live.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetScriptSource)]
+	[SupportedBy("Chrome")]
 	public class SetScriptSourceCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetScriptSourceError.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceError.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Debugger/SetScriptSourceError.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceError.cs
index 47b47b4..ecc9e23 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetScriptSourceError.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetScriptSourceError.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Error data for setScriptSource command. compileError is a case type for uncompilable script source error.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class SetScriptSourceError
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetSkipAllPausesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/SetSkipAllPausesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs
index fef7a43..4bebcd7 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetSkipAllPausesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetSkipAllPauses)]
+	[SupportedBy("Chrome")]
 	public class SetSkipAllPausesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetSkipAllPausesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Debugger/SetSkipAllPausesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommandResponse.cs
index a18abd0..2b39f5a 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetSkipAllPausesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetSkipAllPausesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetSkipAllPauses)]
+	[SupportedBy("Chrome")]
 	public class SetSkipAllPausesCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetVariableValueCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Debugger/SetVariableValueCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
index 7d21457..0821aa0 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetVariableValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Changes value of variable in a callframe or a closure. Either callframe or function must be specified. Object-based scopes are not supported and must be mutated manually.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetVariableValue)]
+	[SupportedBy("Chrome")]
 	public class SetVariableValueCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetVariableValueCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/SetVariableValueCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommandResponse.cs
index 8d92f80..01b6d16 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetVariableValueCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SetVariableValueCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Changes value of variable in a callframe or a closure. Either callframe or function must be specified. Object-based scopes are not supported and must be mutated manually.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetVariableValue)]
+	[SupportedBy("Chrome")]
 	public class SetVariableValueCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SkipStackFramesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Debugger/SkipStackFramesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommand.cs
index 45dd101..06d37ae 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SkipStackFramesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Makes backend skip steps in the sources with names matching given pattern. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SkipStackFrames)]
+	[SupportedBy("Chrome")]
 	public class SkipStackFramesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SkipStackFramesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/SkipStackFramesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommandResponse.cs
index 0f0d03f..c9ea0d1 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SkipStackFramesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/SkipStackFramesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Makes backend skip steps in the sources with names matching given pattern. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SkipStackFrames)]
+	[SupportedBy("Chrome")]
 	public class SkipStackFramesCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StackTrace.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StackTrace.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Debugger/StackTrace.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/StackTrace.cs
index ec595aa..d8ffa3d 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StackTrace.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StackTrace.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// JavaScript call stack, including async stack traces.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class StackTrace
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepIntoAsyncCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoAsyncCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Debugger/StepIntoAsyncCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoAsyncCommand.cs
index 60cfd52..8eb8649 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepIntoAsyncCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoAsyncCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Steps into the first async operation handler that was scheduled by or after the current statement.
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepIntoAsync)]
+	[SupportedBy("Chrome")]
 	public class StepIntoAsyncCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepIntoAsyncCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoAsyncCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Debugger/StepIntoAsyncCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoAsyncCommandResponse.cs
index b80a689..f74ddff 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepIntoAsyncCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoAsyncCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
 {
 	/// <summary>
 	/// Steps into the first async operation handler that was scheduled by or after the current statement.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.StepIntoAsync)]
+	[SupportedBy("Chrome")]
 	public class StepIntoAsyncCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs
new file mode 100644
index 0000000..f7263b3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Steps into the function call.
+	/// </summary>
+	[Command(ProtocolName.Debugger.StepInto)]
+	[SupportedBy("Chrome")]
+	public class StepIntoCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommandResponse.cs
new file mode 100644
index 0000000..ab682cb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepIntoCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Steps into the function call.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.StepInto)]
+	[SupportedBy("Chrome")]
+	public class StepIntoCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs
new file mode 100644
index 0000000..5b65d4a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Steps out of the function call.
+	/// </summary>
+	[Command(ProtocolName.Debugger.StepOut)]
+	[SupportedBy("Chrome")]
+	public class StepOutCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommandResponse.cs
new file mode 100644
index 0000000..0583aef
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOutCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Steps out of the function call.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.StepOut)]
+	[SupportedBy("Chrome")]
+	public class StepOutCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs
new file mode 100644
index 0000000..65daa3e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Steps over the statement.
+	/// </summary>
+	[Command(ProtocolName.Debugger.StepOver)]
+	[SupportedBy("Chrome")]
+	public class StepOverCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommandResponse.cs
new file mode 100644
index 0000000..abc609a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Debugger/StepOverCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Debugger
+{
+	/// <summary>
+	/// Steps over the statement.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.StepOver)]
+	[SupportedBy("Chrome")]
+	public class StepOverCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
index 631fde3..62bf4f5 100644
--- a/source/ChromeDevTools/Protocol/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DeviceOrientation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DeviceOrientation
 {
 	/// <summary>
 	/// Clears the overridden Device Orientation.
 	/// </summary>
 	[Command(ProtocolName.DeviceOrientation.ClearDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceOrientationOverrideCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs
index 0f4d474..f3a0582 100644
--- a/source/ChromeDevTools/Protocol/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/ClearDeviceOrientationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DeviceOrientation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DeviceOrientation
 {
 	/// <summary>
 	/// Clears the overridden Device Orientation.
 	/// </summary>
 	[CommandResponse(ProtocolName.DeviceOrientation.ClearDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceOrientationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
index 08d5d1a..3af33ab 100644
--- a/source/ChromeDevTools/Protocol/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DeviceOrientation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DeviceOrientation
 {
 	/// <summary>
 	/// Overrides the Device Orientation.
 	/// </summary>
 	[Command(ProtocolName.DeviceOrientation.SetDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceOrientationOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs
index 7b3890d..4c0bc78 100644
--- a/source/ChromeDevTools/Protocol/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/DeviceOrientation/SetDeviceOrientationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DeviceOrientation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.DeviceOrientation
 {
 	/// <summary>
 	/// Overrides the Device Orientation.
 	/// </summary>
 	[CommandResponse(ProtocolName.DeviceOrientation.SetDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceOrientationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/CanEmulateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Emulation/CanEmulateCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs
index 21601c8..139ccb7 100644
--- a/source/ChromeDevTools/Protocol/Emulation/CanEmulateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Tells whether emulation is supported.
 	/// </summary>
 	[Command(ProtocolName.Emulation.CanEmulate)]
+	[SupportedBy("Chrome")]
 	public class CanEmulateCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/CanEmulateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Emulation/CanEmulateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommandResponse.cs
index 620905c..f552bf5 100644
--- a/source/ChromeDevTools/Protocol/Emulation/CanEmulateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/CanEmulateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Tells whether emulation is supported.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.CanEmulate)]
+	[SupportedBy("Chrome")]
 	public class CanEmulateCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/ClearDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Emulation/ClearDeviceMetricsOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs
index d0e404a..20e690f 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ClearDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Clears the overriden device metrics.
 	/// </summary>
 	[Command(ProtocolName.Emulation.ClearDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceMetricsOverrideCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs
index a814409..60dab23 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearDeviceMetricsOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Clears the overriden device metrics.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.ClearDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceMetricsOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/ClearGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Emulation/ClearGeolocationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs
index 86cccdf..ce05f83 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ClearGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Clears the overriden Geolocation Position and Error.
 	/// </summary>
 	[Command(ProtocolName.Emulation.ClearGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearGeolocationOverrideCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/ClearGeolocationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Emulation/ClearGeolocationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommandResponse.cs
index beb579c..9947edb 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ClearGeolocationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ClearGeolocationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Clears the overriden Geolocation Position and Error.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.ClearGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearGeolocationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/ResetScrollAndPageScaleFactorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetScrollAndPageScaleFactorCommand.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Emulation/ResetScrollAndPageScaleFactorCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ResetScrollAndPageScaleFactorCommand.cs
index 87b7820..aad69b7 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ResetScrollAndPageScaleFactorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetScrollAndPageScaleFactorCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Requests that scroll offsets and page scale factor are reset to initial values.
 	/// </summary>
 	[Command(ProtocolName.Emulation.ResetScrollAndPageScaleFactor)]
+	[SupportedBy("Chrome")]
 	public class ResetScrollAndPageScaleFactorCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs
index 8c4887c..bf5c02f 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ResetScrollAndPageScaleFactorCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Requests that scroll offsets and page scale factor are reset to initial values.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.ResetScrollAndPageScaleFactor)]
+	[SupportedBy("Chrome")]
 	public class ResetScrollAndPageScaleFactorCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Emulation/SetDeviceMetricsOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
index 2977880..d257032 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media query results).
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceMetricsOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetDeviceMetricsOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Emulation/SetDeviceMetricsOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommandResponse.cs
index 5e45462..213bb2d 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetDeviceMetricsOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetDeviceMetricsOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media query results).
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.SetDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceMetricsOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetEmulatedMediaCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Emulation/SetEmulatedMediaCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs
index 1dc8d64..c59bf52 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetEmulatedMediaCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Emulates the given media for CSS media queries.
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetEmulatedMedia)]
+	[SupportedBy("Chrome")]
 	public class SetEmulatedMediaCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetEmulatedMediaCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Emulation/SetEmulatedMediaCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommandResponse.cs
index 3f138b3..ed76c9c 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetEmulatedMediaCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetEmulatedMediaCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Emulates the given media for CSS media queries.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.SetEmulatedMedia)]
+	[SupportedBy("Chrome")]
 	public class SetEmulatedMediaCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Emulation/SetGeolocationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs
index 8870d05..cf6941c 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetGeolocationOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetGeolocationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Emulation/SetGeolocationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommandResponse.cs
index bc87db1..f30b48e 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetGeolocationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetGeolocationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.SetGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetGeolocationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetPageScaleFactorCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Emulation/SetPageScaleFactorCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs
index ba0db1a..bc0b883 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetPageScaleFactorCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Sets a specified page scale factor.
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetPageScaleFactor)]
+	[SupportedBy("Chrome")]
 	public class SetPageScaleFactorCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetPageScaleFactorCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Emulation/SetPageScaleFactorCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommandResponse.cs
index 363bd03..8ea2781 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetPageScaleFactorCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetPageScaleFactorCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Sets a specified page scale factor.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.SetPageScaleFactor)]
+	[SupportedBy("Chrome")]
 	public class SetPageScaleFactorCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetScriptExecutionDisabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Emulation/SetScriptExecutionDisabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs
index fde9c96..8c56471 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetScriptExecutionDisabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Switches script execution in the page.
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetScriptExecutionDisabled)]
+	[SupportedBy("Chrome")]
 	public class SetScriptExecutionDisabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetScriptExecutionDisabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Emulation/SetScriptExecutionDisabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommandResponse.cs
index 9f6ab4e..5e7ee6b 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetScriptExecutionDisabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetScriptExecutionDisabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Switches script execution in the page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.SetScriptExecutionDisabled)]
+	[SupportedBy("Chrome")]
 	public class SetScriptExecutionDisabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetTouchEmulationEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Emulation/SetTouchEmulationEnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs
index 2cc792b..4d957a9 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetTouchEmulationEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Toggles mouse event-based touch event emulation.
 	/// </summary>
 	[Command(ProtocolName.Emulation.SetTouchEmulationEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetTouchEmulationEnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/SetTouchEmulationEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Emulation/SetTouchEmulationEnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommandResponse.cs
index 41c010d..9d73481 100644
--- a/source/ChromeDevTools/Protocol/Emulation/SetTouchEmulationEnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/SetTouchEmulationEnabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Toggles mouse event-based touch event emulation.
 	/// </summary>
 	[CommandResponse(ProtocolName.Emulation.SetTouchEmulationEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetTouchEmulationEnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Emulation/Viewport.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/Viewport.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Emulation/Viewport.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/Viewport.cs
index 6f112e7..9fce93b 100644
--- a/source/ChromeDevTools/Protocol/Emulation/Viewport.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/Viewport.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Visible page viewport
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Viewport
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Emulation/ViewportChangedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Emulation/ViewportChangedEvent.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Emulation/ViewportChangedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Emulation/ViewportChangedEvent.cs
index 990c933..f23cf7e 100644
--- a/source/ChromeDevTools/Protocol/Emulation/ViewportChangedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Emulation/ViewportChangedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Emulation
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Emulation
 {
 	/// <summary>
 	/// Fired when a visible page viewport has changed. Only fired when device metrics are overridden.
 	/// </summary>
 	[Event(ProtocolName.Emulation.ViewportChanged)]
+	[SupportedBy("Chrome")]
 	public class ViewportChangedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/DeleteEntryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DeleteEntryCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/FileSystem/DeleteEntryCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/DeleteEntryCommand.cs
index aaf968a..7741ae9 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/DeleteEntryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DeleteEntryCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Deletes specified entry. If the entry is a directory, the agent deletes children recursively.
 	/// </summary>
 	[Command(ProtocolName.FileSystem.DeleteEntry)]
+	[SupportedBy("Chrome")]
 	public class DeleteEntryCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/DeleteEntryCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DeleteEntryCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/FileSystem/DeleteEntryCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/DeleteEntryCommandResponse.cs
index 1550991..afb3507 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/DeleteEntryCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DeleteEntryCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Deletes specified entry. If the entry is a directory, the agent deletes children recursively.
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.DeleteEntry)]
+	[SupportedBy("Chrome")]
 	public class DeleteEntryCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DisableCommand.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/FileSystem/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/DisableCommand.cs
index b2c0901..daf475d 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Disables events from backend.
 	/// </summary>
 	[Command(ProtocolName.FileSystem.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/FileSystem/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DisableCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/FileSystem/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/DisableCommandResponse.cs
index 9093f33..eaa8f25 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Disables events from backend.
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/FileSystem/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/EnableCommand.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/FileSystem/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/EnableCommand.cs
index 55fcbd0..2adf9a3 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Enables events from backend.
 	/// </summary>
 	[Command(ProtocolName.FileSystem.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/FileSystem/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/EnableCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/FileSystem/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/EnableCommandResponse.cs
index 257ed76..2bcb0ce 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Enables events from backend.
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/FileSystem/Entry.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/Entry.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/FileSystem/Entry.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/Entry.cs
index c40da25..370e6d3 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/Entry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/Entry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Represents a browser side file or directory.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Entry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/Metadata.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/Metadata.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/FileSystem/Metadata.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/Metadata.cs
index 1d0c236..909b1cc 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/Metadata.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/Metadata.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Represents metadata of a file or entry.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Metadata
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestDirectoryContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestDirectoryContentCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommand.cs
index cc639c8..abc4756 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestDirectoryContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns content of the directory.
 	/// </summary>
 	[Command(ProtocolName.FileSystem.RequestDirectoryContent)]
+	[SupportedBy("Chrome")]
 	public class RequestDirectoryContentCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestDirectoryContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestDirectoryContentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommandResponse.cs
index 67e5e00..73fbf55 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestDirectoryContentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestDirectoryContentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns content of the directory.
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.RequestDirectoryContent)]
+	[SupportedBy("Chrome")]
 	public class RequestDirectoryContentCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestFileContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestFileContentCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommand.cs
index 37554a9..87d2674 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestFileContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns content of the file. Result should be sliced into [start, end).
 	/// </summary>
 	[Command(ProtocolName.FileSystem.RequestFileContent)]
+	[SupportedBy("Chrome")]
 	public class RequestFileContentCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestFileContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommandResponse.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestFileContentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommandResponse.cs
index cfc0d50..b2e3f53 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestFileContentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileContentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns content of the file. Result should be sliced into [start, end).
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.RequestFileContent)]
+	[SupportedBy("Chrome")]
 	public class RequestFileContentCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestFileSystemRootCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestFileSystemRootCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommand.cs
index 97bbf7b..787d301 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestFileSystemRootCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns root directory of the FileSystem, if exists.
 	/// </summary>
 	[Command(ProtocolName.FileSystem.RequestFileSystemRoot)]
+	[SupportedBy("Chrome")]
 	public class RequestFileSystemRootCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestFileSystemRootCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestFileSystemRootCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommandResponse.cs
index 7863700..fa9ae25 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestFileSystemRootCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestFileSystemRootCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns root directory of the FileSystem, if exists.
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.RequestFileSystemRoot)]
+	[SupportedBy("Chrome")]
 	public class RequestFileSystemRootCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestMetadataCommand.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestMetadataCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommand.cs
index b286875..b83385f 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestMetadataCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns metadata of the entry.
 	/// </summary>
 	[Command(ProtocolName.FileSystem.RequestMetadata)]
+	[SupportedBy("Chrome")]
 	public class RequestMetadataCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/FileSystem/RequestMetadataCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/FileSystem/RequestMetadataCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommandResponse.cs
index b30f8cd..f7a2174 100644
--- a/source/ChromeDevTools/Protocol/FileSystem/RequestMetadataCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/FileSystem/RequestMetadataCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.FileSystem
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.FileSystem
 {
 	/// <summary>
 	/// Returns metadata of the entry.
 	/// </summary>
 	[CommandResponse(ProtocolName.FileSystem.RequestMetadata)]
+	[SupportedBy("Chrome")]
 	public class RequestMetadataCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/AddHeapSnapshotChunkEvent.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddHeapSnapshotChunkEvent.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/HeapProfiler/AddHeapSnapshotChunkEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddHeapSnapshotChunkEvent.cs
index 113bdc0..7d750cf 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/AddHeapSnapshotChunkEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddHeapSnapshotChunkEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Event(ProtocolName.HeapProfiler.AddHeapSnapshotChunk)]
+	[SupportedBy("Chrome")]
 	public class AddHeapSnapshotChunkEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/AddInspectedHeapObjectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/HeapProfiler/AddInspectedHeapObjectCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs
index c97dac8..7c1cd1b 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/AddInspectedHeapObjectCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	/// <summary>
 	/// Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).
 	/// </summary>
 	[Command(ProtocolName.HeapProfiler.AddInspectedHeapObject)]
+	[SupportedBy("Chrome")]
 	public class AddInspectedHeapObjectCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs
index 3f9ada9..20f006f 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/AddInspectedHeapObjectCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	/// <summary>
 	/// Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).
 	/// </summary>
 	[CommandResponse(ProtocolName.HeapProfiler.AddInspectedHeapObject)]
+	[SupportedBy("Chrome")]
 	public class AddInspectedHeapObjectCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/CollectGarbageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs
similarity index 67%
rename from source/ChromeDevTools/Protocol/HeapProfiler/CollectGarbageCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs
index 08aef32..8709d0a 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/CollectGarbageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.CollectGarbage)]
+	[SupportedBy("Chrome")]
 	public class CollectGarbageCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/CollectGarbageCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommandResponse.cs
similarity index 69%
rename from source/ChromeDevTools/Protocol/HeapProfiler/CollectGarbageCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommandResponse.cs
index b4ffa8a..962b5df 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/CollectGarbageCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/CollectGarbageCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.CollectGarbage)]
+	[SupportedBy("Chrome")]
 	public class CollectGarbageCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs
similarity index 66%
rename from source/ChromeDevTools/Protocol/HeapProfiler/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs
index 6530b86..8607df5 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/HeapProfiler/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommandResponse.cs
index 734dae7..56552d4 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/DisableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs
similarity index 65%
rename from source/ChromeDevTools/Protocol/HeapProfiler/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs
index ad3fc64..a67d1fa 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommandResponse.cs
similarity index 67%
rename from source/ChromeDevTools/Protocol/HeapProfiler/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommandResponse.cs
index 6f52a49..bc5e6cc 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/EnableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/GetHeapObjectIdCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/HeapProfiler/GetHeapObjectIdCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs
index 4529dff..3a0549f 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/GetHeapObjectIdCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.GetHeapObjectId)]
+	[SupportedBy("Chrome")]
 	public class GetHeapObjectIdCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/GetHeapObjectIdCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/HeapProfiler/GetHeapObjectIdCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommandResponse.cs
index 6fbda46..5338378 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/GetHeapObjectIdCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetHeapObjectIdCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.GetHeapObjectId)]
+	[SupportedBy("Chrome")]
 	public class GetHeapObjectIdCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/GetObjectByHeapObjectIdCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
index a02efd8..96b538a 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.GetObjectByHeapObjectId)]
+	[SupportedBy("Chrome")]
 	public class GetObjectByHeapObjectIdCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs
index 13703ac..53aa7a7 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/GetObjectByHeapObjectIdCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.GetObjectByHeapObjectId)]
+	[SupportedBy("Chrome")]
 	public class GetObjectByHeapObjectIdCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/HeapStatsUpdateEvent.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/HeapStatsUpdateEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/HeapProfiler/HeapStatsUpdateEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/HeapStatsUpdateEvent.cs
index 08c3b14..dfd874a 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/HeapStatsUpdateEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/HeapStatsUpdateEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	/// <summary>
 	/// If heap objects tracking has been started then backend may send update for one or more fragments
 	/// </summary>
 	[Event(ProtocolName.HeapProfiler.HeapStatsUpdate)]
+	[SupportedBy("Chrome")]
 	public class HeapStatsUpdateEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/LastSeenObjectIdEvent.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/LastSeenObjectIdEvent.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/HeapProfiler/LastSeenObjectIdEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/LastSeenObjectIdEvent.cs
index 877ba44..8cdd3a4 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/LastSeenObjectIdEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/LastSeenObjectIdEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	/// <summary>
 	/// If heap objects tracking has been started then backend regulary sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
 	/// </summary>
 	[Event(ProtocolName.HeapProfiler.LastSeenObjectId)]
+	[SupportedBy("Chrome")]
 	public class LastSeenObjectIdEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/ReportHeapSnapshotProgressEvent.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/ReportHeapSnapshotProgressEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/HeapProfiler/ReportHeapSnapshotProgressEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/ReportHeapSnapshotProgressEvent.cs
index f1f2b72..4129363 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/ReportHeapSnapshotProgressEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/ReportHeapSnapshotProgressEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Event(ProtocolName.HeapProfiler.ReportHeapSnapshotProgress)]
+	[SupportedBy("Chrome")]
 	public class ReportHeapSnapshotProgressEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/ResetProfilesEvent.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/ResetProfilesEvent.cs
similarity index 58%
rename from source/ChromeDevTools/Protocol/HeapProfiler/ResetProfilesEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/ResetProfilesEvent.cs
index 627f6f5..1e0f72f 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/ResetProfilesEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/ResetProfilesEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Event(ProtocolName.HeapProfiler.ResetProfiles)]
+	[SupportedBy("Chrome")]
 	public class ResetProfilesEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/StartTrackingHeapObjectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/HeapProfiler/StartTrackingHeapObjectsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs
index d0d9325..01996fe 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/StartTrackingHeapObjectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.StartTrackingHeapObjects)]
+	[SupportedBy("Chrome")]
 	public class StartTrackingHeapObjectsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs
index 2288810..1a28c2b 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StartTrackingHeapObjectsCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.StartTrackingHeapObjects)]
+	[SupportedBy("Chrome")]
 	public class StartTrackingHeapObjectsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/StopTrackingHeapObjectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/HeapProfiler/StopTrackingHeapObjectsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs
index 9db4908..78fdd0e 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/StopTrackingHeapObjectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.StopTrackingHeapObjects)]
+	[SupportedBy("Chrome")]
 	public class StopTrackingHeapObjectsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs
index 73cca48..5f93837 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/StopTrackingHeapObjectsCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.StopTrackingHeapObjects)]
+	[SupportedBy("Chrome")]
 	public class StopTrackingHeapObjectsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/TakeHeapSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/HeapProfiler/TakeHeapSnapshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs
index 0c0cfaa..39b4296 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/TakeHeapSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[Command(ProtocolName.HeapProfiler.TakeHeapSnapshot)]
+	[SupportedBy("Chrome")]
 	public class TakeHeapSnapshotCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/HeapProfiler/TakeHeapSnapshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/HeapProfiler/TakeHeapSnapshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommandResponse.cs
index fe52657..6db471e 100644
--- a/source/ChromeDevTools/Protocol/HeapProfiler/TakeHeapSnapshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/HeapProfiler/TakeHeapSnapshotCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.HeapProfiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.HeapProfiler
 {
 	[CommandResponse(ProtocolName.HeapProfiler.TakeHeapSnapshot)]
+	[SupportedBy("Chrome")]
 	public class TakeHeapSnapshotCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs
new file mode 100644
index 0000000..2284cdd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Clears all entries from an object store.
+	/// </summary>
+	[Command(ProtocolName.IndexedDB.ClearObjectStore)]
+	[SupportedBy("Chrome")]
+	public class ClearObjectStoreCommand
+	{
+		/// <summary>
+		/// Gets or sets Security origin.
+		/// </summary>
+		public string SecurityOrigin { get; set; }
+		/// <summary>
+		/// Gets or sets Database name.
+		/// </summary>
+		public string DatabaseName { get; set; }
+		/// <summary>
+		/// Gets or sets Object store name.
+		/// </summary>
+		public string ObjectStoreName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommandResponse.cs
new file mode 100644
index 0000000..d4711a1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ClearObjectStoreCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Clears all entries from an object store.
+	/// </summary>
+	[CommandResponse(ProtocolName.IndexedDB.ClearObjectStore)]
+	[SupportedBy("Chrome")]
+	public class ClearObjectStoreCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/DataEntry.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DataEntry.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/IndexedDB/DataEntry.cs
rename to source/ChromeDevTools/Protocol/Chrome/IndexedDB/DataEntry.cs
index fd1ef8e..6e78381 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/DataEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DataEntry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 {
 	/// <summary>
 	/// Data entry.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class DataEntry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/DatabaseWithObjectStores.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DatabaseWithObjectStores.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/IndexedDB/DatabaseWithObjectStores.cs
rename to source/ChromeDevTools/Protocol/Chrome/IndexedDB/DatabaseWithObjectStores.cs
index 2bb363b..031ec16 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/DatabaseWithObjectStores.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DatabaseWithObjectStores.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
 {
 	/// <summary>
 	/// Database with an array of object stores.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class DatabaseWithObjectStores
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs
new file mode 100644
index 0000000..91df3b8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Disables events from backend.
+	/// </summary>
+	[Command(ProtocolName.IndexedDB.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommandResponse.cs
new file mode 100644
index 0000000..8411618
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Disables events from backend.
+	/// </summary>
+	[CommandResponse(ProtocolName.IndexedDB.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs
new file mode 100644
index 0000000..a2f4656
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Enables events from backend.
+	/// </summary>
+	[Command(ProtocolName.IndexedDB.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommandResponse.cs
new file mode 100644
index 0000000..aae2448
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Enables events from backend.
+	/// </summary>
+	[CommandResponse(ProtocolName.IndexedDB.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/Key.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/Key.cs
new file mode 100644
index 0000000..c966624
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/Key.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Key.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Key
+	{
+		/// <summary>
+		/// Gets or sets Key type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Number value.
+		/// </summary>
+		public double Number { get; set; }
+		/// <summary>
+		/// Gets or sets String value.
+		/// </summary>
+		public string String { get; set; }
+		/// <summary>
+		/// Gets or sets Date value.
+		/// </summary>
+		public double Date { get; set; }
+		/// <summary>
+		/// Gets or sets Array value.
+		/// </summary>
+		public Key[] Array { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyPath.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyPath.cs
new file mode 100644
index 0000000..551f3d9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyPath.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Key path.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class KeyPath
+	{
+		/// <summary>
+		/// Gets or sets Key path type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets String value.
+		/// </summary>
+		public string String { get; set; }
+		/// <summary>
+		/// Gets or sets Array value.
+		/// </summary>
+		public string[] Array { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyRange.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyRange.cs
new file mode 100644
index 0000000..164d3e5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/KeyRange.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Key range.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class KeyRange
+	{
+		/// <summary>
+		/// Gets or sets Lower bound.
+		/// </summary>
+		public Key Lower { get; set; }
+		/// <summary>
+		/// Gets or sets Upper bound.
+		/// </summary>
+		public Key Upper { get; set; }
+		/// <summary>
+		/// Gets or sets If true lower bound is open.
+		/// </summary>
+		public bool LowerOpen { get; set; }
+		/// <summary>
+		/// Gets or sets If true upper bound is open.
+		/// </summary>
+		public bool UpperOpen { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStore.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStore.cs
new file mode 100644
index 0000000..dcb6d4c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStore.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Object store.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class ObjectStore
+	{
+		/// <summary>
+		/// Gets or sets Object store name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Object store key path.
+		/// </summary>
+		public KeyPath KeyPath { get; set; }
+		/// <summary>
+		/// Gets or sets If true, object store has auto increment flag set.
+		/// </summary>
+		public bool AutoIncrement { get; set; }
+		/// <summary>
+		/// Gets or sets Indexes in this object store.
+		/// </summary>
+		public ObjectStoreIndex[] Indexes { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStoreIndex.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStoreIndex.cs
new file mode 100644
index 0000000..a353575
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/ObjectStoreIndex.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Object store index.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class ObjectStoreIndex
+	{
+		/// <summary>
+		/// Gets or sets Index name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Index key path.
+		/// </summary>
+		public KeyPath KeyPath { get; set; }
+		/// <summary>
+		/// Gets or sets If true, index is unique.
+		/// </summary>
+		public bool Unique { get; set; }
+		/// <summary>
+		/// Gets or sets If true, index allows multiple entries for a key.
+		/// </summary>
+		public bool MultiEntry { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs
new file mode 100644
index 0000000..deba238
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommand.cs
@@ -0,0 +1,43 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Requests data from object store or index.
+	/// </summary>
+	[Command(ProtocolName.IndexedDB.RequestData)]
+	[SupportedBy("Chrome")]
+	public class RequestDataCommand
+	{
+		/// <summary>
+		/// Gets or sets Security origin.
+		/// </summary>
+		public string SecurityOrigin { get; set; }
+		/// <summary>
+		/// Gets or sets Database name.
+		/// </summary>
+		public string DatabaseName { get; set; }
+		/// <summary>
+		/// Gets or sets Object store name.
+		/// </summary>
+		public string ObjectStoreName { get; set; }
+		/// <summary>
+		/// Gets or sets Index name, empty string for object store data requests.
+		/// </summary>
+		public string IndexName { get; set; }
+		/// <summary>
+		/// Gets or sets Number of records to skip.
+		/// </summary>
+		public long SkipCount { get; set; }
+		/// <summary>
+		/// Gets or sets Number of records to fetch.
+		/// </summary>
+		public long PageSize { get; set; }
+		/// <summary>
+		/// Gets or sets Key range.
+		/// </summary>
+		public KeyRange KeyRange { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommandResponse.cs
new file mode 100644
index 0000000..b3f3d09
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDataCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Requests data from object store or index.
+	/// </summary>
+	[CommandResponse(ProtocolName.IndexedDB.RequestData)]
+	[SupportedBy("Chrome")]
+	public class RequestDataCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Array of object store data entries.
+		/// </summary>
+		public DataEntry[] ObjectStoreDataEntries { get; set; }
+		/// <summary>
+		/// Gets or sets If true, there are more entries to fetch in the given range.
+		/// </summary>
+		public bool HasMore { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs
new file mode 100644
index 0000000..b836cef
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Requests database with given name in given frame.
+	/// </summary>
+	[Command(ProtocolName.IndexedDB.RequestDatabase)]
+	[SupportedBy("Chrome")]
+	public class RequestDatabaseCommand
+	{
+		/// <summary>
+		/// Gets or sets Security origin.
+		/// </summary>
+		public string SecurityOrigin { get; set; }
+		/// <summary>
+		/// Gets or sets Database name.
+		/// </summary>
+		public string DatabaseName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommandResponse.cs
new file mode 100644
index 0000000..0f41551
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Requests database with given name in given frame.
+	/// </summary>
+	[CommandResponse(ProtocolName.IndexedDB.RequestDatabase)]
+	[SupportedBy("Chrome")]
+	public class RequestDatabaseCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Database with an array of object stores.
+		/// </summary>
+		public DatabaseWithObjectStores DatabaseWithObjectStores { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs
new file mode 100644
index 0000000..d0a1e5b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Requests database names for given security origin.
+	/// </summary>
+	[Command(ProtocolName.IndexedDB.RequestDatabaseNames)]
+	[SupportedBy("Chrome")]
+	public class RequestDatabaseNamesCommand
+	{
+		/// <summary>
+		/// Gets or sets Security origin.
+		/// </summary>
+		public string SecurityOrigin { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommandResponse.cs
new file mode 100644
index 0000000..86a5d53
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/IndexedDB/RequestDatabaseNamesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.IndexedDB
+{
+	/// <summary>
+	/// Requests database names for given security origin.
+	/// </summary>
+	[CommandResponse(ProtocolName.IndexedDB.RequestDatabaseNames)]
+	[SupportedBy("Chrome")]
+	public class RequestDatabaseNamesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Database names for origin.
+		/// </summary>
+		public string[] DatabaseNames { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Input/DispatchKeyEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
similarity index 96%
rename from source/ChromeDevTools/Protocol/Input/DispatchKeyEventCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
index 9d97af1..850c7c4 100644
--- a/source/ChromeDevTools/Protocol/Input/DispatchKeyEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Dispatches a key event to the page.
 	/// </summary>
 	[Command(ProtocolName.Input.DispatchKeyEvent)]
+	[SupportedBy("Chrome")]
 	public class DispatchKeyEventCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Input/DispatchKeyEventCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Input/DispatchKeyEventCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommandResponse.cs
index fb93f74..9213281 100644
--- a/source/ChromeDevTools/Protocol/Input/DispatchKeyEventCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchKeyEventCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Dispatches a key event to the page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.DispatchKeyEvent)]
+	[SupportedBy("Chrome")]
 	public class DispatchKeyEventCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/DispatchMouseEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Input/DispatchMouseEventCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs
index c4d2a49..d27d937 100644
--- a/source/ChromeDevTools/Protocol/Input/DispatchMouseEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Dispatches a mouse event to the page.
 	/// </summary>
 	[Command(ProtocolName.Input.DispatchMouseEvent)]
+	[SupportedBy("Chrome")]
 	public class DispatchMouseEventCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Input/DispatchMouseEventCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Input/DispatchMouseEventCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommandResponse.cs
index b81b261..5302b3f 100644
--- a/source/ChromeDevTools/Protocol/Input/DispatchMouseEventCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchMouseEventCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Dispatches a mouse event to the page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.DispatchMouseEvent)]
+	[SupportedBy("Chrome")]
 	public class DispatchMouseEventCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/DispatchTouchEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/Input/DispatchTouchEventCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs
index 09e4394..ee07ea9 100644
--- a/source/ChromeDevTools/Protocol/Input/DispatchTouchEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Dispatches a touch event to the page.
 	/// </summary>
 	[Command(ProtocolName.Input.DispatchTouchEvent)]
+	[SupportedBy("Chrome")]
 	public class DispatchTouchEventCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Input/DispatchTouchEventCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Input/DispatchTouchEventCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommandResponse.cs
index f9c6dd7..d7a8b05 100644
--- a/source/ChromeDevTools/Protocol/Input/DispatchTouchEventCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/DispatchTouchEventCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Dispatches a touch event to the page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.DispatchTouchEvent)]
+	[SupportedBy("Chrome")]
 	public class DispatchTouchEventCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/EmulateTouchFromMouseEventCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Input/EmulateTouchFromMouseEventCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs
index 2a8266e..cf55a67 100644
--- a/source/ChromeDevTools/Protocol/Input/EmulateTouchFromMouseEventCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Emulates touch event from the mouse event parameters.
 	/// </summary>
 	[Command(ProtocolName.Input.EmulateTouchFromMouseEvent)]
+	[SupportedBy("Chrome")]
 	public class EmulateTouchFromMouseEventCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Input/EmulateTouchFromMouseEventCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Input/EmulateTouchFromMouseEventCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommandResponse.cs
index 91643d4..2b9454e 100644
--- a/source/ChromeDevTools/Protocol/Input/EmulateTouchFromMouseEventCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/EmulateTouchFromMouseEventCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Emulates touch event from the mouse event parameters.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.EmulateTouchFromMouseEvent)]
+	[SupportedBy("Chrome")]
 	public class EmulateTouchFromMouseEventCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/GestureSourceType.cs b/source/ChromeDevTools/Protocol/Chrome/Input/GestureSourceType.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/Input/GestureSourceType.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/GestureSourceType.cs
index 2d7fc71..24e24d4 100644
--- a/source/ChromeDevTools/Protocol/Input/GestureSourceType.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/GestureSourceType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input{
 	/// <summary>
 	/// 
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Input/SynthesizePinchGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Input/SynthesizePinchGestureCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs
index 39ce43b..2018136 100644
--- a/source/ChromeDevTools/Protocol/Input/SynthesizePinchGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Synthesizes a pinch gesture over a time period by issuing appropriate touch events.
 	/// </summary>
 	[Command(ProtocolName.Input.SynthesizePinchGesture)]
+	[SupportedBy("Chrome")]
 	public class SynthesizePinchGestureCommand
 	{
 		/// <summary>
@@ -29,6 +30,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Input
 		/// <summary>
 		/// Gets or sets Which type of input events to be generated (default: 'default', which queries the platform for the preferred input type).
 		/// </summary>
-		public GestureSourceType GestureSourceType { get; set; }
+		public string GestureSourceType { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Input/SynthesizePinchGestureCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Input/SynthesizePinchGestureCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommandResponse.cs
index 911035b..b9ec09a 100644
--- a/source/ChromeDevTools/Protocol/Input/SynthesizePinchGestureCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizePinchGestureCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Synthesizes a pinch gesture over a time period by issuing appropriate touch events.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.SynthesizePinchGesture)]
+	[SupportedBy("Chrome")]
 	public class SynthesizePinchGestureCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/SynthesizeScrollGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Input/SynthesizeScrollGestureCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
index 7ae3a09..50c0d37 100644
--- a/source/ChromeDevTools/Protocol/Input/SynthesizeScrollGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Synthesizes a scroll gesture over a time period by issuing appropriate touch events.
 	/// </summary>
 	[Command(ProtocolName.Input.SynthesizeScrollGesture)]
+	[SupportedBy("Chrome")]
 	public class SynthesizeScrollGestureCommand
 	{
 		/// <summary>
@@ -45,6 +46,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Input
 		/// <summary>
 		/// Gets or sets Which type of input events to be generated (default: 'default', which queries the platform for the preferred input type).
 		/// </summary>
-		public GestureSourceType GestureSourceType { get; set; }
+		public string GestureSourceType { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Input/SynthesizeScrollGestureCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Input/SynthesizeScrollGestureCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommandResponse.cs
index c88a244..739844c 100644
--- a/source/ChromeDevTools/Protocol/Input/SynthesizeScrollGestureCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeScrollGestureCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Synthesizes a scroll gesture over a time period by issuing appropriate touch events.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.SynthesizeScrollGesture)]
+	[SupportedBy("Chrome")]
 	public class SynthesizeScrollGestureCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/SynthesizeTapGestureCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Input/SynthesizeTapGestureCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs
index 7a9b2a5..99f5acc 100644
--- a/source/ChromeDevTools/Protocol/Input/SynthesizeTapGestureCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Synthesizes a tap gesture over a time period by issuing appropriate touch events.
 	/// </summary>
 	[Command(ProtocolName.Input.SynthesizeTapGesture)]
+	[SupportedBy("Chrome")]
 	public class SynthesizeTapGestureCommand
 	{
 		/// <summary>
@@ -29,6 +30,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.Input
 		/// <summary>
 		/// Gets or sets Which type of input events to be generated (default: 'default', which queries the platform for the preferred input type).
 		/// </summary>
-		public GestureSourceType GestureSourceType { get; set; }
+		public string GestureSourceType { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/Input/SynthesizeTapGestureCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Input/SynthesizeTapGestureCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommandResponse.cs
index 1c079d1..2d162de 100644
--- a/source/ChromeDevTools/Protocol/Input/SynthesizeTapGestureCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/SynthesizeTapGestureCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// Synthesizes a tap gesture over a time period by issuing appropriate touch events.
 	/// </summary>
 	[CommandResponse(ProtocolName.Input.SynthesizeTapGesture)]
+	[SupportedBy("Chrome")]
 	public class SynthesizeTapGestureCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Input/TouchPoint.cs b/source/ChromeDevTools/Protocol/Chrome/Input/TouchPoint.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Input/TouchPoint.cs
rename to source/ChromeDevTools/Protocol/Chrome/Input/TouchPoint.cs
index 24dff8b..b43a7b6 100644
--- a/source/ChromeDevTools/Protocol/Input/TouchPoint.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Input/TouchPoint.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Input
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Input
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class TouchPoint
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/DetachedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/DetachedEvent.cs
new file mode 100644
index 0000000..e2633c7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/DetachedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	/// <summary>
+	/// Fired when remote debugging connection is about to be terminated. Contains detach reason.
+	/// </summary>
+	[Event(ProtocolName.Inspector.Detached)]
+	[SupportedBy("Chrome")]
+	public class DetachedEvent
+	{
+		/// <summary>
+		/// Gets or sets The reason why connection has been terminated.
+		/// </summary>
+		public string Reason { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs
new file mode 100644
index 0000000..e7fdb95
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	/// <summary>
+	/// Disables inspector domain notifications.
+	/// </summary>
+	[Command(ProtocolName.Inspector.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommandResponse.cs
new file mode 100644
index 0000000..6635486
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	/// <summary>
+	/// Disables inspector domain notifications.
+	/// </summary>
+	[CommandResponse(ProtocolName.Inspector.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs
new file mode 100644
index 0000000..1f108e7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	/// <summary>
+	/// Enables inspector domain notifications.
+	/// </summary>
+	[Command(ProtocolName.Inspector.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommandResponse.cs
new file mode 100644
index 0000000..b9adafd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	/// <summary>
+	/// Enables inspector domain notifications.
+	/// </summary>
+	[CommandResponse(ProtocolName.Inspector.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Inspector/EvaluateForTestInFrontendEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/EvaluateForTestInFrontendEvent.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Inspector/EvaluateForTestInFrontendEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Inspector/EvaluateForTestInFrontendEvent.cs
index 0dc77cf..1f2e71e 100644
--- a/source/ChromeDevTools/Protocol/Inspector/EvaluateForTestInFrontendEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/EvaluateForTestInFrontendEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
 {
 	[Event(ProtocolName.Inspector.EvaluateForTestInFrontend)]
+	[SupportedBy("Chrome")]
 	public class EvaluateForTestInFrontendEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs
new file mode 100644
index 0000000..3df1647
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/InspectEvent.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	[Event(ProtocolName.Inspector.Inspect)]
+	[SupportedBy("Chrome")]
+	public class InspectEvent
+	{
+		/// <summary>
+		/// Gets or sets Object
+		/// </summary>
+		public Runtime.RemoteObject Object { get; set; }
+		/// <summary>
+		/// Gets or sets Hints
+		/// </summary>
+		public object Hints { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Inspector/TargetCrashedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Inspector/TargetCrashedEvent.cs
new file mode 100644
index 0000000..089323c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Inspector/TargetCrashedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Inspector
+{
+	/// <summary>
+	/// Fired when debugging target has crashed
+	/// </summary>
+	[Event(ProtocolName.Inspector.TargetCrashed)]
+	[SupportedBy("Chrome")]
+	public class TargetCrashedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/CompositingReasonsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/LayerTree/CompositingReasonsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs
index d61cb1f..4af8a36 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/CompositingReasonsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Provides the reasons why the given layer was composited.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.CompositingReasons)]
+	[SupportedBy("Chrome")]
 	public class CompositingReasonsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/CompositingReasonsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/LayerTree/CompositingReasonsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommandResponse.cs
index 8e7ecab..07a6bf8 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/CompositingReasonsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/CompositingReasonsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Provides the reasons why the given layer was composited.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.CompositingReasons)]
+	[SupportedBy("Chrome")]
 	public class CompositingReasonsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs
new file mode 100644
index 0000000..0715a03
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
+{
+	/// <summary>
+	/// Disables compositing tree inspection.
+	/// </summary>
+	[Command(ProtocolName.LayerTree.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommandResponse.cs
new file mode 100644
index 0000000..e172b3d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
+{
+	/// <summary>
+	/// Disables compositing tree inspection.
+	/// </summary>
+	[CommandResponse(ProtocolName.LayerTree.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs
new file mode 100644
index 0000000..b2f8123
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
+{
+	/// <summary>
+	/// Enables compositing tree inspection.
+	/// </summary>
+	[Command(ProtocolName.LayerTree.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommandResponse.cs
new file mode 100644
index 0000000..f3541cc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
+{
+	/// <summary>
+	/// Enables compositing tree inspection.
+	/// </summary>
+	[CommandResponse(ProtocolName.LayerTree.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/Layer.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/Layer.cs
similarity index 96%
rename from source/ChromeDevTools/Protocol/LayerTree/Layer.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/Layer.cs
index ab7d1f2..7cbab0d 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/Layer.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/Layer.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Information about a compositing layer.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Layer
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/LayerPaintedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LayerPaintedEvent.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/LayerTree/LayerPaintedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/LayerPaintedEvent.cs
index 702df62..9cd4af3 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/LayerPaintedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LayerPaintedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	[Event(ProtocolName.LayerTree.LayerPainted)]
+	[SupportedBy("Chrome")]
 	public class LayerPaintedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/LayerTreeDidChangeEvent.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LayerTreeDidChangeEvent.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/LayerTree/LayerTreeDidChangeEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/LayerTreeDidChangeEvent.cs
index facf912..c22b8ef 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/LayerTreeDidChangeEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LayerTreeDidChangeEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	[Event(ProtocolName.LayerTree.LayerTreeDidChange)]
+	[SupportedBy("Chrome")]
 	public class LayerTreeDidChangeEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/LoadSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/LayerTree/LoadSnapshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs
index ca30001..28b1043 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/LoadSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Returns the snapshot identifier.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.LoadSnapshot)]
+	[SupportedBy("Chrome")]
 	public class LoadSnapshotCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/LoadSnapshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/LayerTree/LoadSnapshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommandResponse.cs
index 1a056a5..d8dad71 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/LoadSnapshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/LoadSnapshotCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Returns the snapshot identifier.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.LoadSnapshot)]
+	[SupportedBy("Chrome")]
 	public class LoadSnapshotCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/MakeSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/LayerTree/MakeSnapshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs
index bb01170..0fefe9a 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/MakeSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Returns the layer snapshot identifier.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.MakeSnapshot)]
+	[SupportedBy("Chrome")]
 	public class MakeSnapshotCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/MakeSnapshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/LayerTree/MakeSnapshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommandResponse.cs
index c781ad3..da3fee5 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/MakeSnapshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/MakeSnapshotCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Returns the layer snapshot identifier.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.MakeSnapshot)]
+	[SupportedBy("Chrome")]
 	public class MakeSnapshotCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/PictureTile.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/PictureTile.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/LayerTree/PictureTile.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/PictureTile.cs
index 75c49b5..028bc54 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/PictureTile.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/PictureTile.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Serialized fragment of layer picture along with its offset within the layer.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PictureTile
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ProfileSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/LayerTree/ProfileSnapshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs
index 376bfa3..ef18933 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ProfileSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	[Command(ProtocolName.LayerTree.ProfileSnapshot)]
+	[SupportedBy("Chrome")]
 	public class ProfileSnapshotCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ProfileSnapshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/LayerTree/ProfileSnapshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommandResponse.cs
index fda60fb..fad70fb 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ProfileSnapshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ProfileSnapshotCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	[CommandResponse(ProtocolName.LayerTree.ProfileSnapshot)]
+	[SupportedBy("Chrome")]
 	public class ProfileSnapshotCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ReleaseSnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/LayerTree/ReleaseSnapshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs
index 4a6d0e3..69cdd02 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ReleaseSnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Releases layer snapshot captured by the back-end.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.ReleaseSnapshot)]
+	[SupportedBy("Chrome")]
 	public class ReleaseSnapshotCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ReleaseSnapshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/LayerTree/ReleaseSnapshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommandResponse.cs
index 4db862c..2a3a3fd 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ReleaseSnapshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReleaseSnapshotCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Releases layer snapshot captured by the back-end.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.ReleaseSnapshot)]
+	[SupportedBy("Chrome")]
 	public class ReleaseSnapshotCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ReplaySnapshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/LayerTree/ReplaySnapshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs
index de971a9..4c1a8f8 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ReplaySnapshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Replays the layer snapshot and returns the resulting bitmap.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.ReplaySnapshot)]
+	[SupportedBy("Chrome")]
 	public class ReplaySnapshotCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ReplaySnapshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/LayerTree/ReplaySnapshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommandResponse.cs
index 686585e..8b1a449 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ReplaySnapshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ReplaySnapshotCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Replays the layer snapshot and returns the resulting bitmap.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.ReplaySnapshot)]
+	[SupportedBy("Chrome")]
 	public class ReplaySnapshotCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/ScrollRect.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ScrollRect.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/LayerTree/ScrollRect.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/ScrollRect.cs
index ab3c182..746f6c8 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/ScrollRect.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/ScrollRect.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Rectangle where scrolling happens on the main thread.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ScrollRect
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/SnapshotCommandLogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/LayerTree/SnapshotCommandLogCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs
index a4775ee..182206a 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/SnapshotCommandLogCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Replays the layer snapshot and returns canvas log.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.SnapshotCommandLog)]
+	[SupportedBy("Chrome")]
 	public class SnapshotCommandLogCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/LayerTree/SnapshotCommandLogCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/LayerTree/SnapshotCommandLogCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommandResponse.cs
index 53bc156..fdcd8e2 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/SnapshotCommandLogCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/LayerTree/SnapshotCommandLogCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.LayerTree
 {
 	/// <summary>
 	/// Replays the layer snapshot and returns canvas log.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.SnapshotCommandLog)]
+	[SupportedBy("Chrome")]
 	public class SnapshotCommandLogCommandResponse
 	{
 		public class CommandLogArray
diff --git a/source/ChromeDevTools/Protocol/Memory/GetDOMCountersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Memory/GetDOMCountersCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs
index a3c0b1a..359354a 100644
--- a/source/ChromeDevTools/Protocol/Memory/GetDOMCountersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Memory
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Memory
 {
 	[Command(ProtocolName.Memory.GetDOMCounters)]
+	[SupportedBy("Chrome")]
 	public class GetDOMCountersCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Memory/GetDOMCountersCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Memory/GetDOMCountersCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommandResponse.cs
index 1b7496f..946ccee 100644
--- a/source/ChromeDevTools/Protocol/Memory/GetDOMCountersCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Memory/GetDOMCountersCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Memory
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Memory
 {
 	[CommandResponse(ProtocolName.Memory.GetDOMCounters)]
+	[SupportedBy("Chrome")]
 	public class GetDOMCountersCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/CachedResource.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CachedResource.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Network/CachedResource.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/CachedResource.cs
index 8d90b15..36805ad 100644
--- a/source/ChromeDevTools/Protocol/Network/CachedResource.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CachedResource.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Information about the cached resource.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CachedResource
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs
new file mode 100644
index 0000000..858e48d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Tells whether clearing browser cache is supported.
+	/// </summary>
+	[Command(ProtocolName.Network.CanClearBrowserCache)]
+	[SupportedBy("Chrome")]
+	public class CanClearBrowserCacheCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommandResponse.cs
new file mode 100644
index 0000000..f5573cc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCacheCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Tells whether clearing browser cache is supported.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.CanClearBrowserCache)]
+	[SupportedBy("Chrome")]
+	public class CanClearBrowserCacheCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets True if browser cache can be cleared.
+		/// </summary>
+		public bool Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs
new file mode 100644
index 0000000..d36ee78
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Tells whether clearing browser cookies is supported.
+	/// </summary>
+	[Command(ProtocolName.Network.CanClearBrowserCookies)]
+	[SupportedBy("Chrome")]
+	public class CanClearBrowserCookiesCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommandResponse.cs
new file mode 100644
index 0000000..12732a9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanClearBrowserCookiesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Tells whether clearing browser cookies is supported.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.CanClearBrowserCookies)]
+	[SupportedBy("Chrome")]
+	public class CanClearBrowserCookiesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets True if browser cookies can be cleared.
+		/// </summary>
+		public bool Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/CanEmulateNetworkConditionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Network/CanEmulateNetworkConditionsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs
index 23b5866..c0df3a2 100644
--- a/source/ChromeDevTools/Protocol/Network/CanEmulateNetworkConditionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Tells whether emulation of network conditions is supported.
 	/// </summary>
 	[Command(ProtocolName.Network.CanEmulateNetworkConditions)]
+	[SupportedBy("Chrome")]
 	public class CanEmulateNetworkConditionsCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/CanEmulateNetworkConditionsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/CanEmulateNetworkConditionsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommandResponse.cs
index 73ce611..c6944ad 100644
--- a/source/ChromeDevTools/Protocol/Network/CanEmulateNetworkConditionsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/CanEmulateNetworkConditionsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Tells whether emulation of network conditions is supported.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.CanEmulateNetworkConditions)]
+	[SupportedBy("Chrome")]
 	public class CanEmulateNetworkConditionsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs
new file mode 100644
index 0000000..dc704dc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Clears browser cache.
+	/// </summary>
+	[Command(ProtocolName.Network.ClearBrowserCache)]
+	[SupportedBy("Chrome")]
+	public class ClearBrowserCacheCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommandResponse.cs
new file mode 100644
index 0000000..fd20ddf
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCacheCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Clears browser cache.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.ClearBrowserCache)]
+	[SupportedBy("Chrome")]
+	public class ClearBrowserCacheCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs
new file mode 100644
index 0000000..d66db9e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Clears browser cookies.
+	/// </summary>
+	[Command(ProtocolName.Network.ClearBrowserCookies)]
+	[SupportedBy("Chrome")]
+	public class ClearBrowserCookiesCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommandResponse.cs
new file mode 100644
index 0000000..e57ebd6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ClearBrowserCookiesCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Clears browser cookies.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.ClearBrowserCookies)]
+	[SupportedBy("Chrome")]
+	public class ClearBrowserCookiesCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs
new file mode 100644
index 0000000..f88cc68
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Cookie.cs
@@ -0,0 +1,50 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Cookie object
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Cookie
+	{
+		/// <summary>
+		/// Gets or sets Cookie name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Cookie value.
+		/// </summary>
+		public string Value { get; set; }
+		/// <summary>
+		/// Gets or sets Cookie domain.
+		/// </summary>
+		public string Domain { get; set; }
+		/// <summary>
+		/// Gets or sets Cookie path.
+		/// </summary>
+		public string Path { get; set; }
+		/// <summary>
+		/// Gets or sets Cookie expires.
+		/// </summary>
+		public double Expires { get; set; }
+		/// <summary>
+		/// Gets or sets Cookie size.
+		/// </summary>
+		public long Size { get; set; }
+		/// <summary>
+		/// Gets or sets True if cookie is http-only.
+		/// </summary>
+		public bool HttpOnly { get; set; }
+		/// <summary>
+		/// Gets or sets True if cookie is secure.
+		/// </summary>
+		public bool Secure { get; set; }
+		/// <summary>
+		/// Gets or sets True in case of session cookie.
+		/// </summary>
+		public bool Session { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/DataReceivedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DataReceivedEvent.cs
new file mode 100644
index 0000000..5b02547
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DataReceivedEvent.cs
@@ -0,0 +1,29 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when data chunk was received over the network.
+	/// </summary>
+	[Event(ProtocolName.Network.DataReceived)]
+	[SupportedBy("Chrome")]
+	public class DataReceivedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets Data chunk length.
+		/// </summary>
+		public long DataLength { get; set; }
+		/// <summary>
+		/// Gets or sets Actual bytes received (might be less than dataLength for compressed encodings).
+		/// </summary>
+		public long EncodedDataLength { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/DeleteCookieCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Network/DeleteCookieCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs
index 2d573b6..eeba45f 100644
--- a/source/ChromeDevTools/Protocol/Network/DeleteCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Deletes browser cookie with given name, domain and path.
 	/// </summary>
 	[Command(ProtocolName.Network.DeleteCookie)]
+	[SupportedBy("Chrome")]
 	public class DeleteCookieCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/DeleteCookieCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Network/DeleteCookieCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommandResponse.cs
index 8d4a39a..eb366e5 100644
--- a/source/ChromeDevTools/Protocol/Network/DeleteCookieCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DeleteCookieCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Deletes browser cookie with given name, domain and path.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.DeleteCookie)]
+	[SupportedBy("Chrome")]
 	public class DeleteCookieCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs
new file mode 100644
index 0000000..f524f7d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Disables network tracking, prevents network events from being sent to the client.
+	/// </summary>
+	[Command(ProtocolName.Network.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommandResponse.cs
new file mode 100644
index 0000000..2c9eb13
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Disables network tracking, prevents network events from being sent to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/EmulateNetworkConditionsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Network/EmulateNetworkConditionsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
index 29d3a4d..d794fc5 100644
--- a/source/ChromeDevTools/Protocol/Network/EmulateNetworkConditionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Activates emulation of network conditions.
 	/// </summary>
 	[Command(ProtocolName.Network.EmulateNetworkConditions)]
+	[SupportedBy("Chrome")]
 	public class EmulateNetworkConditionsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/EmulateNetworkConditionsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Network/EmulateNetworkConditionsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommandResponse.cs
index 6697578..435bb0c 100644
--- a/source/ChromeDevTools/Protocol/Network/EmulateNetworkConditionsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EmulateNetworkConditionsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Activates emulation of network conditions.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.EmulateNetworkConditions)]
+	[SupportedBy("Chrome")]
 	public class EmulateNetworkConditionsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
new file mode 100644
index 0000000..b601cff
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Enables network tracking, network events will now be delivered to the client.
+	/// </summary>
+	[Command(ProtocolName.Network.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommandResponse.cs
new file mode 100644
index 0000000..bb286ee
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Enables network tracking, network events will now be delivered to the client.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/EventSourceMessageReceivedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/EventSourceMessageReceivedEvent.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Network/EventSourceMessageReceivedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/EventSourceMessageReceivedEvent.cs
index ba714c1..ea086cb 100644
--- a/source/ChromeDevTools/Protocol/Network/EventSourceMessageReceivedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/EventSourceMessageReceivedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Fired when EventSource message is received.
 	/// </summary>
 	[Event(ProtocolName.Network.EventSourceMessageReceived)]
+	[SupportedBy("Chrome")]
 	public class EventSourceMessageReceivedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Network/GetCookiesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
index 55c0a4a..5a8a661 100644
--- a/source/ChromeDevTools/Protocol/Network/GetCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.
 	/// </summary>
 	[Command(ProtocolName.Network.GetCookies)]
+	[SupportedBy("Chrome")]
 	public class GetCookiesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/GetCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Network/GetCookiesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommandResponse.cs
index 10839ed..6722e7b 100644
--- a/source/ChromeDevTools/Protocol/Network/GetCookiesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetCookiesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.GetCookies)]
+	[SupportedBy("Chrome")]
 	public class GetCookiesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs
new file mode 100644
index 0000000..c997a27
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Returns content served for the given request.
+	/// </summary>
+	[Command(ProtocolName.Network.GetResponseBody)]
+	[SupportedBy("Chrome")]
+	public class GetResponseBodyCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the network request to get content for.
+		/// </summary>
+		public string RequestId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommandResponse.cs
new file mode 100644
index 0000000..015439a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/GetResponseBodyCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Returns content served for the given request.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.GetResponseBody)]
+	[SupportedBy("Chrome")]
+	public class GetResponseBodyCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Response body.
+		/// </summary>
+		public string Body { get; set; }
+		/// <summary>
+		/// Gets or sets True, if content was sent as base64.
+		/// </summary>
+		public bool Base64Encoded { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/Initiator.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/Network/Initiator.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs
index 511b96b..032d423 100644
--- a/source/ChromeDevTools/Protocol/Network/Initiator.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Initiator.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Information about the request initiator.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Initiator
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/LoadingFailedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Network/LoadingFailedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs
index e52dac9..eb57769 100644
--- a/source/ChromeDevTools/Protocol/Network/LoadingFailedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFailedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Fired when HTTP request has failed to load.
 	/// </summary>
 	[Event(ProtocolName.Network.LoadingFailed)]
+	[SupportedBy("Chrome")]
 	public class LoadingFailedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/LoadingFinishedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFinishedEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Network/LoadingFinishedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/LoadingFinishedEvent.cs
index e1c928a..b2a46e0 100644
--- a/source/ChromeDevTools/Protocol/Network/LoadingFinishedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/LoadingFinishedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Fired when HTTP request has finished loading.
 	/// </summary>
 	[Event(ProtocolName.Network.LoadingFinished)]
+	[SupportedBy("Chrome")]
 	public class LoadingFinishedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/ReplayXHRCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Network/ReplayXHRCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs
index 5e015e1..290f2cb 100644
--- a/source/ChromeDevTools/Protocol/Network/ReplayXHRCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// This method sends a new XMLHttpRequest which is identical to the original one. The following parameters should be identical: method, url, async, request body, extra headers, withCredentials attribute, user, password.
 	/// </summary>
 	[Command(ProtocolName.Network.ReplayXHR)]
+	[SupportedBy("Chrome")]
 	public class ReplayXHRCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/ReplayXHRCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Network/ReplayXHRCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommandResponse.cs
index f8e641f..41fc42a 100644
--- a/source/ChromeDevTools/Protocol/Network/ReplayXHRCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ReplayXHRCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// This method sends a new XMLHttpRequest which is identical to the original one. The following parameters should be identical: method, url, async, request body, extra headers, withCredentials attribute, user, password.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.ReplayXHR)]
+	[SupportedBy("Chrome")]
 	public class ReplayXHRCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs
new file mode 100644
index 0000000..e07ecaa
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Request.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// HTTP request data.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Request
+	{
+		/// <summary>
+		/// Gets or sets Request URL.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP request method.
+		/// </summary>
+		public string Method { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP request headers.
+		/// </summary>
+		public Dictionary<string, string> Headers { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP POST request data.
+		/// </summary>
+		public string PostData { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/RequestServedFromCacheEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/RequestServedFromCacheEvent.cs
new file mode 100644
index 0000000..e05ccee
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/RequestServedFromCacheEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired if request ended up loading from cache.
+	/// </summary>
+	[Event(ProtocolName.Network.RequestServedFromCache)]
+	[SupportedBy("Chrome")]
+	public class RequestServedFromCacheEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/RequestWillBeSentEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/RequestWillBeSentEvent.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Network/RequestWillBeSentEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/RequestWillBeSentEvent.cs
index 3bcbe6d..716c204 100644
--- a/source/ChromeDevTools/Protocol/Network/RequestWillBeSentEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/RequestWillBeSentEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Fired when page is about to send HTTP request.
 	/// </summary>
 	[Event(ProtocolName.Network.RequestWillBeSent)]
+	[SupportedBy("Chrome")]
 	public class RequestWillBeSentEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/ResourceTiming.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ResourceTiming.cs
similarity index 96%
rename from source/ChromeDevTools/Protocol/Network/ResourceTiming.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/ResourceTiming.cs
index fd0785f..2763619 100644
--- a/source/ChromeDevTools/Protocol/Network/ResourceTiming.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ResourceTiming.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Timing information for the request.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ResourceTiming
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/Response.cs b/source/ChromeDevTools/Protocol/Chrome/Network/Response.cs
similarity index 96%
rename from source/ChromeDevTools/Protocol/Network/Response.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/Response.cs
index 2528604..78580bf 100644
--- a/source/ChromeDevTools/Protocol/Network/Response.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/Response.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// HTTP response data.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class Response
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/ResponseReceivedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/ResponseReceivedEvent.cs
new file mode 100644
index 0000000..c77a376
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/ResponseReceivedEvent.cs
@@ -0,0 +1,37 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when HTTP response is available.
+	/// </summary>
+	[Event(ProtocolName.Network.ResponseReceived)]
+	[SupportedBy("Chrome")]
+	public class ResponseReceivedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Frame identifier.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Loader identifier.
+		/// </summary>
+		public string LoaderId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets Resource type.
+		/// </summary>
+		public Page.ResourceType Type { get; set; }
+		/// <summary>
+		/// Gets or sets Response data.
+		/// </summary>
+		public Response Response { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs
new file mode 100644
index 0000000..650df4d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Toggles ignoring cache for each request. If <code>true</code>, cache will not be used.
+	/// </summary>
+	[Command(ProtocolName.Network.SetCacheDisabled)]
+	[SupportedBy("Chrome")]
+	public class SetCacheDisabledCommand
+	{
+		/// <summary>
+		/// Gets or sets Cache disabled state.
+		/// </summary>
+		public bool CacheDisabled { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommandResponse.cs
new file mode 100644
index 0000000..db64cfe
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetCacheDisabledCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Toggles ignoring cache for each request. If <code>true</code>, cache will not be used.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.SetCacheDisabled)]
+	[SupportedBy("Chrome")]
+	public class SetCacheDisabledCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/SetDataSizeLimitsForTestCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Network/SetDataSizeLimitsForTestCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs
index 006e842..ea4d507 100644
--- a/source/ChromeDevTools/Protocol/Network/SetDataSizeLimitsForTestCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// For testing.
 	/// </summary>
 	[Command(ProtocolName.Network.SetDataSizeLimitsForTest)]
+	[SupportedBy("Chrome")]
 	public class SetDataSizeLimitsForTestCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/SetDataSizeLimitsForTestCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Network/SetDataSizeLimitsForTestCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommandResponse.cs
index 60be090..34b9462 100644
--- a/source/ChromeDevTools/Protocol/Network/SetDataSizeLimitsForTestCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetDataSizeLimitsForTestCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// For testing.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.SetDataSizeLimitsForTest)]
+	[SupportedBy("Chrome")]
 	public class SetDataSizeLimitsForTestCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs
new file mode 100644
index 0000000..d0a6946
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Specifies whether to always send extra HTTP headers with the requests from this page.
+	/// </summary>
+	[Command(ProtocolName.Network.SetExtraHTTPHeaders)]
+	[SupportedBy("Chrome")]
+	public class SetExtraHTTPHeadersCommand
+	{
+		/// <summary>
+		/// Gets or sets Map with extra HTTP headers.
+		/// </summary>
+		public Dictionary<string, string> Headers { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommandResponse.cs
new file mode 100644
index 0000000..dcd398f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetExtraHTTPHeadersCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Specifies whether to always send extra HTTP headers with the requests from this page.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.SetExtraHTTPHeaders)]
+	[SupportedBy("Chrome")]
+	public class SetExtraHTTPHeadersCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/SetMonitoringXHREnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetMonitoringXHREnabledCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/SetMonitoringXHREnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/SetMonitoringXHREnabledCommand.cs
index 943ee0f..5b4b2d0 100644
--- a/source/ChromeDevTools/Protocol/Network/SetMonitoringXHREnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetMonitoringXHREnabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.
 	/// </summary>
 	[Command(ProtocolName.Network.SetMonitoringXHREnabled)]
+	[SupportedBy("Chrome")]
 	public class SetMonitoringXHREnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/SetMonitoringXHREnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetMonitoringXHREnabledCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Network/SetMonitoringXHREnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/SetMonitoringXHREnabledCommandResponse.cs
index 8874afa..32747df 100644
--- a/source/ChromeDevTools/Protocol/Network/SetMonitoringXHREnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetMonitoringXHREnabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.SetMonitoringXHREnabled)]
+	[SupportedBy("Chrome")]
 	public class SetMonitoringXHREnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/SetUserAgentOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Network/SetUserAgentOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs
index ffa75d4..8defc65 100644
--- a/source/ChromeDevTools/Protocol/Network/SetUserAgentOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Allows overriding user agent with the given string.
 	/// </summary>
 	[Command(ProtocolName.Network.SetUserAgentOverride)]
+	[SupportedBy("Chrome")]
 	public class SetUserAgentOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/SetUserAgentOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Network/SetUserAgentOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommandResponse.cs
index b63b959..6ce283b 100644
--- a/source/ChromeDevTools/Protocol/Network/SetUserAgentOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/SetUserAgentOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Allows overriding user agent with the given string.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.SetUserAgentOverride)]
+	[SupportedBy("Chrome")]
 	public class SetUserAgentOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketClosedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketClosedEvent.cs
new file mode 100644
index 0000000..b4b8233
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketClosedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when WebSocket is closed.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketClosed)]
+	[SupportedBy("Chrome")]
+	public class WebSocketClosedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs
new file mode 100644
index 0000000..937c67e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketCreatedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired upon WebSocket creation.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketCreated)]
+	[SupportedBy("Chrome")]
+	public class WebSocketCreatedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket request URL.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketFrame.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrame.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Network/WebSocketFrame.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrame.cs
index 0a99745..fc4d1bb 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketFrame.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrame.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// WebSocket frame data.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class WebSocketFrame
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameErrorEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameErrorEvent.cs
new file mode 100644
index 0000000..ac9afed
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameErrorEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when WebSocket frame error occurs.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketFrameError)]
+	[SupportedBy("Chrome")]
+	public class WebSocketFrameErrorEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket frame error message.
+		/// </summary>
+		public string ErrorMessage { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameReceivedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameReceivedEvent.cs
new file mode 100644
index 0000000..18042cb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameReceivedEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when WebSocket frame is received.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketFrameReceived)]
+	[SupportedBy("Chrome")]
+	public class WebSocketFrameReceivedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket response data.
+		/// </summary>
+		public WebSocketFrame Response { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameSentEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameSentEvent.cs
new file mode 100644
index 0000000..4bea1a1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketFrameSentEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when WebSocket frame is sent.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketFrameSent)]
+	[SupportedBy("Chrome")]
+	public class WebSocketFrameSentEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket response data.
+		/// </summary>
+		public WebSocketFrame Response { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketHandshakeResponseReceivedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketHandshakeResponseReceivedEvent.cs
new file mode 100644
index 0000000..54a35ae
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketHandshakeResponseReceivedEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
+{
+	/// <summary>
+	/// Fired when WebSocket handshake response becomes available.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketHandshakeResponseReceived)]
+	[SupportedBy("Chrome")]
+	public class WebSocketHandshakeResponseReceivedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket response data.
+		/// </summary>
+		public WebSocketResponse Response { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketRequest.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketRequest.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Network/WebSocketRequest.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/WebSocketRequest.cs
index 9996b3c..59854fa 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketRequest.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketRequest.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// WebSocket request data.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class WebSocketRequest
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketResponse.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/Network/WebSocketResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/WebSocketResponse.cs
index 212481a..4e0b6c2 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketResponse.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// WebSocket response data.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class WebSocketResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketWillSendHandshakeRequestEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketWillSendHandshakeRequestEvent.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Network/WebSocketWillSendHandshakeRequestEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Network/WebSocketWillSendHandshakeRequestEvent.cs
index 59e05d6..0dbb451 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketWillSendHandshakeRequestEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Network/WebSocketWillSendHandshakeRequestEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Network
 {
 	/// <summary>
 	/// Fired when WebSocket is about to initiate handshake.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketWillSendHandshakeRequest)]
+	[SupportedBy("Chrome")]
 	public class WebSocketWillSendHandshakeRequestEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs
new file mode 100644
index 0000000..4f5ef0b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	[Command(ProtocolName.Page.AddScriptToEvaluateOnLoad)]
+	[SupportedBy("Chrome")]
+	public class AddScriptToEvaluateOnLoadCommand
+	{
+		/// <summary>
+		/// Gets or sets ScriptSource
+		/// </summary>
+		public string ScriptSource { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
new file mode 100644
index 0000000..a8ff01f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	[CommandResponse(ProtocolName.Page.AddScriptToEvaluateOnLoad)]
+	[SupportedBy("Chrome")]
+	public class AddScriptToEvaluateOnLoadCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the added script.
+		/// </summary>
+		public string Identifier { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/CanScreencastCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CanScreencastCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Page/CanScreencastCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/CanScreencastCommand.cs
index ea5da5b..abf55d2 100644
--- a/source/ChromeDevTools/Protocol/Page/CanScreencastCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CanScreencastCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Tells whether screencast is supported.
 	/// </summary>
 	[Command(ProtocolName.Page.CanScreencast)]
+	[SupportedBy("Chrome")]
 	public class CanScreencastCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/CanScreencastCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CanScreencastCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/CanScreencastCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/CanScreencastCommandResponse.cs
index 34209e8..1244221 100644
--- a/source/ChromeDevTools/Protocol/Page/CanScreencastCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CanScreencastCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Tells whether screencast is supported.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.CanScreencast)]
+	[SupportedBy("Chrome")]
 	public class CanScreencastCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/CaptureScreenshotCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Page/CaptureScreenshotCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
index c9a4ddf..41a32c0 100644
--- a/source/ChromeDevTools/Protocol/Page/CaptureScreenshotCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Capture page screenshot.
 	/// </summary>
 	[Command(ProtocolName.Page.CaptureScreenshot)]
+	[SupportedBy("Chrome")]
 	public class CaptureScreenshotCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/CaptureScreenshotCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/CaptureScreenshotCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommandResponse.cs
index e1def56..6a26e38 100644
--- a/source/ChromeDevTools/Protocol/Page/CaptureScreenshotCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/CaptureScreenshotCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Capture page screenshot.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.CaptureScreenshot)]
+	[SupportedBy("Chrome")]
 	public class CaptureScreenshotCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/ClearDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/ClearDeviceMetricsOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs
index 62ddcbc..78cbc3a 100644
--- a/source/ChromeDevTools/Protocol/Page/ClearDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Clears the overriden device metrics.
 	/// </summary>
 	[Command(ProtocolName.Page.ClearDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceMetricsOverrideCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ClearDeviceMetricsOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/ClearDeviceMetricsOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommandResponse.cs
index f012939..099252d 100644
--- a/source/ChromeDevTools/Protocol/Page/ClearDeviceMetricsOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceMetricsOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Clears the overriden device metrics.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.ClearDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceMetricsOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ClearDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/ClearDeviceOrientationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs
index 0a839f2..d35ef69 100644
--- a/source/ChromeDevTools/Protocol/Page/ClearDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Clears the overridden Device Orientation.
 	/// </summary>
 	[Command(ProtocolName.Page.ClearDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceOrientationOverrideCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ClearDeviceOrientationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/ClearDeviceOrientationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommandResponse.cs
index 4b4ce99..737913e 100644
--- a/source/ChromeDevTools/Protocol/Page/ClearDeviceOrientationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearDeviceOrientationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Clears the overridden Device Orientation.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.ClearDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearDeviceOrientationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ClearGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/ClearGeolocationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs
index b67fcda..c302f70 100644
--- a/source/ChromeDevTools/Protocol/Page/ClearGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Clears the overriden Geolocation Position and Error.
 	/// </summary>
 	[Command(ProtocolName.Page.ClearGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearGeolocationOverrideCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ClearGeolocationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/ClearGeolocationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommandResponse.cs
index 2e04a22..37c744a 100644
--- a/source/ChromeDevTools/Protocol/Page/ClearGeolocationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ClearGeolocationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Clears the overriden Geolocation Position and Error.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.ClearGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class ClearGeolocationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ColorPickedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ColorPickedEvent.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/ColorPickedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ColorPickedEvent.cs
index 05ffb3a..5c6db56 100644
--- a/source/ChromeDevTools/Protocol/Page/ColorPickedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ColorPickedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Fired when a color has been picked.
 	/// </summary>
 	[Event(ProtocolName.Page.ColorPicked)]
+	[SupportedBy("Chrome")]
 	public class ColorPickedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs
new file mode 100644
index 0000000..db8b70f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Deletes browser cookie with given name, domain and path.
+	/// </summary>
+	[Command(ProtocolName.Page.DeleteCookie)]
+	[SupportedBy("Chrome")]
+	public class DeleteCookieCommand
+	{
+		/// <summary>
+		/// Gets or sets Name of the cookie to remove.
+		/// </summary>
+		public string CookieName { get; set; }
+		/// <summary>
+		/// Gets or sets URL to match cooke domain and path.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommandResponse.cs
new file mode 100644
index 0000000..3cfbf58
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DeleteCookieCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Deletes browser cookie with given name, domain and path.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.DeleteCookie)]
+	[SupportedBy("Chrome")]
+	public class DeleteCookieCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs
new file mode 100644
index 0000000..a9ab201
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Disables page domain notifications.
+	/// </summary>
+	[Command(ProtocolName.Page.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommandResponse.cs
new file mode 100644
index 0000000..ca483b3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Disables page domain notifications.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/DomContentEventFiredEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/DomContentEventFiredEvent.cs
new file mode 100644
index 0000000..1c56604
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/DomContentEventFiredEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	[Event(ProtocolName.Page.DomContentEventFired)]
+	[SupportedBy("Chrome")]
+	public class DomContentEventFiredEvent
+	{
+		/// <summary>
+		/// Gets or sets Timestamp
+		/// </summary>
+		public double Timestamp { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs
new file mode 100644
index 0000000..20d32ec
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Enables page domain notifications.
+	/// </summary>
+	[Command(ProtocolName.Page.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommandResponse.cs
new file mode 100644
index 0000000..805756a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Enables page domain notifications.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/Frame.cs b/source/ChromeDevTools/Protocol/Chrome/Page/Frame.cs
new file mode 100644
index 0000000..0c070ee
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/Frame.cs
@@ -0,0 +1,42 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Information about the Frame on the page.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class Frame
+	{
+		/// <summary>
+		/// Gets or sets Frame unique identifier.
+		/// </summary>
+		public string Id { get; set; }
+		/// <summary>
+		/// Gets or sets Parent frame identifier.
+		/// </summary>
+		public string ParentId { get; set; }
+		/// <summary>
+		/// Gets or sets Identifier of the loader associated with this frame.
+		/// </summary>
+		public string LoaderId { get; set; }
+		/// <summary>
+		/// Gets or sets Frame's name as specified in the tag.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Frame document's URL.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Frame document's security origin.
+		/// </summary>
+		public string SecurityOrigin { get; set; }
+		/// <summary>
+		/// Gets or sets Frame document's mimeType as determined by the browser.
+		/// </summary>
+		public string MimeType { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/FrameAttachedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameAttachedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Page/FrameAttachedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/FrameAttachedEvent.cs
index 9ba3c99..0413982 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameAttachedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameAttachedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Fired when frame has been attached to its parent.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameAttached)]
+	[SupportedBy("Chrome")]
 	public class FrameAttachedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameClearedScheduledNavigationEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameClearedScheduledNavigationEvent.cs
new file mode 100644
index 0000000..5395199
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameClearedScheduledNavigationEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when frame no longer has a scheduled navigation.
+	/// </summary>
+	[Event(ProtocolName.Page.FrameClearedScheduledNavigation)]
+	[SupportedBy("Chrome")]
+	public class FrameClearedScheduledNavigationEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the frame that has cleared its scheduled navigation.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameDetachedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameDetachedEvent.cs
new file mode 100644
index 0000000..0e5456c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameDetachedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when frame has been detached from its parent.
+	/// </summary>
+	[Event(ProtocolName.Page.FrameDetached)]
+	[SupportedBy("Chrome")]
+	public class FrameDetachedEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the frame that has been detached.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameNavigatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameNavigatedEvent.cs
new file mode 100644
index 0000000..5b7587e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameNavigatedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired once navigation of the frame has completed. Frame is now associated with the new loader.
+	/// </summary>
+	[Event(ProtocolName.Page.FrameNavigated)]
+	[SupportedBy("Chrome")]
+	public class FrameNavigatedEvent
+	{
+		/// <summary>
+		/// Gets or sets Frame object.
+		/// </summary>
+		public Frame Frame { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/FrameResizedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResizedEvent.cs
similarity index 58%
rename from source/ChromeDevTools/Protocol/Page/FrameResizedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/FrameResizedEvent.cs
index 630a1c9..a3dad76 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameResizedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResizedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	[Event(ProtocolName.Page.FrameResized)]
+	[SupportedBy("Chrome")]
 	public class FrameResizedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/FrameResourceTree.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Page/FrameResourceTree.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs
index 5d0869d..b7ac8eb 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameResourceTree.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameResourceTree.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Information about the Frame hierarchy along with their cached resources.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class FrameResourceTree
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameScheduledNavigationEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameScheduledNavigationEvent.cs
new file mode 100644
index 0000000..4346bd4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameScheduledNavigationEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when frame schedules a potential navigation.
+	/// </summary>
+	[Event(ProtocolName.Page.FrameScheduledNavigation)]
+	[SupportedBy("Chrome")]
+	public class FrameScheduledNavigationEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the frame that has scheduled a navigation.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Delay (in seconds) until the navigation is scheduled to begin. The navigation is not guaranteed to start.
+		/// </summary>
+		public double Delay { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameStartedLoadingEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameStartedLoadingEvent.cs
new file mode 100644
index 0000000..e0ca1d2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameStartedLoadingEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when frame has started loading.
+	/// </summary>
+	[Event(ProtocolName.Page.FrameStartedLoading)]
+	[SupportedBy("Chrome")]
+	public class FrameStartedLoadingEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the frame that has started loading.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/FrameStoppedLoadingEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/FrameStoppedLoadingEvent.cs
new file mode 100644
index 0000000..55fb01d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/FrameStoppedLoadingEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when frame has stopped loading.
+	/// </summary>
+	[Event(ProtocolName.Page.FrameStoppedLoading)]
+	[SupportedBy("Chrome")]
+	public class FrameStoppedLoadingEvent
+	{
+		/// <summary>
+		/// Gets or sets Id of the frame that has stopped loading.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs
new file mode 100644
index 0000000..70c0c84
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.
+	/// </summary>
+	[Command(ProtocolName.Page.GetCookies)]
+	[SupportedBy("Chrome")]
+	public class GetCookiesCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/GetCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Page/GetCookiesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommandResponse.cs
index 207f3ad..cdc12f1 100644
--- a/source/ChromeDevTools/Protocol/Page/GetCookiesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetCookiesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.GetCookies)]
+	[SupportedBy("Chrome")]
 	public class GetCookiesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/GetNavigationHistoryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/GetNavigationHistoryCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs
index 9ac0e4a..3626896 100644
--- a/source/ChromeDevTools/Protocol/Page/GetNavigationHistoryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Returns navigation history for the current page.
 	/// </summary>
 	[Command(ProtocolName.Page.GetNavigationHistory)]
+	[SupportedBy("Chrome")]
 	public class GetNavigationHistoryCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/GetNavigationHistoryCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/GetNavigationHistoryCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommandResponse.cs
index e001aef..8996b43 100644
--- a/source/ChromeDevTools/Protocol/Page/GetNavigationHistoryCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetNavigationHistoryCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Returns navigation history for the current page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.GetNavigationHistory)]
+	[SupportedBy("Chrome")]
 	public class GetNavigationHistoryCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs
new file mode 100644
index 0000000..2636627
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Returns content of the given resource.
+	/// </summary>
+	[Command(ProtocolName.Page.GetResourceContent)]
+	[SupportedBy("Chrome")]
+	public class GetResourceContentCommand
+	{
+		/// <summary>
+		/// Gets or sets Frame id to get resource for.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the resource to get content for.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommandResponse.cs
new file mode 100644
index 0000000..aeea560
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceContentCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Returns content of the given resource.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.GetResourceContent)]
+	[SupportedBy("Chrome")]
+	public class GetResourceContentCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Resource content.
+		/// </summary>
+		public string Content { get; set; }
+		/// <summary>
+		/// Gets or sets True, if content was served as base64.
+		/// </summary>
+		public bool Base64Encoded { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs
new file mode 100644
index 0000000..37faf82
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Returns present frame / resource tree structure.
+	/// </summary>
+	[Command(ProtocolName.Page.GetResourceTree)]
+	[SupportedBy("Chrome")]
+	public class GetResourceTreeCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommandResponse.cs
new file mode 100644
index 0000000..89fe246
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/GetResourceTreeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Returns present frame / resource tree structure.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.GetResourceTree)]
+	[SupportedBy("Chrome")]
+	public class GetResourceTreeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Present frame / resource tree structure.
+		/// </summary>
+		public FrameResourceTree FrameTree { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs
new file mode 100644
index 0000000..1c754b9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).
+	/// </summary>
+	[Command(ProtocolName.Page.HandleJavaScriptDialog)]
+	[SupportedBy("Chrome")]
+	public class HandleJavaScriptDialogCommand
+	{
+		/// <summary>
+		/// Gets or sets Whether to accept or dismiss the dialog.
+		/// </summary>
+		public bool Accept { get; set; }
+		/// <summary>
+		/// Gets or sets The text to enter into the dialog prompt before accepting. Used only if this is a prompt dialog.
+		/// </summary>
+		public string PromptText { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommandResponse.cs
new file mode 100644
index 0000000..3cad7d3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/HandleJavaScriptDialogCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.HandleJavaScriptDialog)]
+	[SupportedBy("Chrome")]
+	public class HandleJavaScriptDialogCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/InterstitialHiddenEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/InterstitialHiddenEvent.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Page/InterstitialHiddenEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/InterstitialHiddenEvent.cs
index 44007a0..2f10673 100644
--- a/source/ChromeDevTools/Protocol/Page/InterstitialHiddenEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/InterstitialHiddenEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Fired when interstitial page was hidden
 	/// </summary>
 	[Event(ProtocolName.Page.InterstitialHidden)]
+	[SupportedBy("Chrome")]
 	public class InterstitialHiddenEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/InterstitialShownEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/InterstitialShownEvent.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Page/InterstitialShownEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/InterstitialShownEvent.cs
index b0a7f6a..9b9ab79 100644
--- a/source/ChromeDevTools/Protocol/Page/InterstitialShownEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/InterstitialShownEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Fired when interstitial page was shown
 	/// </summary>
 	[Event(ProtocolName.Page.InterstitialShown)]
+	[SupportedBy("Chrome")]
 	public class InterstitialShownEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogClosedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogClosedEvent.cs
new file mode 100644
index 0000000..6c88e7b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogClosedEvent.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been closed.
+	/// </summary>
+	[Event(ProtocolName.Page.JavascriptDialogClosed)]
+	[SupportedBy("Chrome")]
+	public class JavascriptDialogClosedEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogOpeningEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogOpeningEvent.cs
new file mode 100644
index 0000000..68b7956
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/JavascriptDialogOpeningEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to open.
+	/// </summary>
+	[Event(ProtocolName.Page.JavascriptDialogOpening)]
+	[SupportedBy("Chrome")]
+	public class JavascriptDialogOpeningEvent
+	{
+		/// <summary>
+		/// Gets or sets Message that will be displayed by the dialog.
+		/// </summary>
+		public string Message { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/LoadEventFiredEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/LoadEventFiredEvent.cs
new file mode 100644
index 0000000..8b4a1a9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/LoadEventFiredEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	[Event(ProtocolName.Page.LoadEventFired)]
+	[SupportedBy("Chrome")]
+	public class LoadEventFiredEvent
+	{
+		/// <summary>
+		/// Gets or sets Timestamp
+		/// </summary>
+		public double Timestamp { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
new file mode 100644
index 0000000..9c8acf8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Navigates current page to the given URL.
+	/// </summary>
+	[Command(ProtocolName.Page.Navigate)]
+	[SupportedBy("Chrome")]
+	public class NavigateCommand
+	{
+		/// <summary>
+		/// Gets or sets URL to navigate the page to.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/NavigateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/NavigateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommandResponse.cs
index 769c4a0..3d8f407 100644
--- a/source/ChromeDevTools/Protocol/Page/NavigateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Navigates current page to the given URL.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.Navigate)]
+	[SupportedBy("Chrome")]
 	public class NavigateCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/NavigateToHistoryEntryCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Page/NavigateToHistoryEntryCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs
index 4e13e6e..28ff156 100644
--- a/source/ChromeDevTools/Protocol/Page/NavigateToHistoryEntryCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Navigates current page to the given history entry.
 	/// </summary>
 	[Command(ProtocolName.Page.NavigateToHistoryEntry)]
+	[SupportedBy("Chrome")]
 	public class NavigateToHistoryEntryCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/NavigateToHistoryEntryCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/NavigateToHistoryEntryCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommandResponse.cs
index dddcbf6..355e83a 100644
--- a/source/ChromeDevTools/Protocol/Page/NavigateToHistoryEntryCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigateToHistoryEntryCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Navigates current page to the given history entry.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.NavigateToHistoryEntry)]
+	[SupportedBy("Chrome")]
 	public class NavigateToHistoryEntryCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/NavigationEntry.cs b/source/ChromeDevTools/Protocol/Chrome/Page/NavigationEntry.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/NavigationEntry.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/NavigationEntry.cs
index e71cbf5..301e6a0 100644
--- a/source/ChromeDevTools/Protocol/Page/NavigationEntry.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/NavigationEntry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Navigation history entry.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class NavigationEntry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs
new file mode 100644
index 0000000..5278221
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Reloads given page optionally ignoring the cache.
+	/// </summary>
+	[Command(ProtocolName.Page.Reload)]
+	[SupportedBy("Chrome")]
+	public class ReloadCommand
+	{
+		/// <summary>
+		/// Gets or sets If true, browser cache is ignored (as if the user pressed Shift+refresh).
+		/// </summary>
+		public bool IgnoreCache { get; set; }
+		/// <summary>
+		/// Gets or sets If set, the script will be injected into all frames of the inspected page after reload.
+		/// </summary>
+		public string ScriptToEvaluateOnLoad { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommandResponse.cs
new file mode 100644
index 0000000..0948edd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ReloadCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Reloads given page optionally ignoring the cache.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.Reload)]
+	[SupportedBy("Chrome")]
+	public class ReloadCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs
new file mode 100644
index 0000000..11ba706
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	[Command(ProtocolName.Page.RemoveScriptToEvaluateOnLoad)]
+	[SupportedBy("Chrome")]
+	public class RemoveScriptToEvaluateOnLoadCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier
+		/// </summary>
+		public string Identifier { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
new file mode 100644
index 0000000..00e3c44
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	[CommandResponse(ProtocolName.Page.RemoveScriptToEvaluateOnLoad)]
+	[SupportedBy("Chrome")]
+	public class RemoveScriptToEvaluateOnLoadCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/ResourceType.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ResourceType.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/ResourceType.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ResourceType.cs
index 870e515..26ca722 100644
--- a/source/ChromeDevTools/Protocol/Page/ResourceType.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ResourceType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page{
 	/// <summary>
 	/// Resource type as it was perceived by the rendering engine.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/Page/ScreencastFrameAckCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Page/ScreencastFrameAckCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs
index dae2c9b..6088b5c 100644
--- a/source/ChromeDevTools/Protocol/Page/ScreencastFrameAckCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Acknowledges that a screencast frame has been received by the frontend.
 	/// </summary>
 	[Command(ProtocolName.Page.ScreencastFrameAck)]
+	[SupportedBy("Chrome")]
 	public class ScreencastFrameAckCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/ScreencastFrameAckCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Page/ScreencastFrameAckCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommandResponse.cs
index 3872615..ee5a602 100644
--- a/source/ChromeDevTools/Protocol/Page/ScreencastFrameAckCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameAckCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Acknowledges that a screencast frame has been received by the frontend.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.ScreencastFrameAck)]
+	[SupportedBy("Chrome")]
 	public class ScreencastFrameAckCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/ScreencastFrameEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/ScreencastFrameEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs
index 291689a..de3b218 100644
--- a/source/ChromeDevTools/Protocol/Page/ScreencastFrameEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Compressed image data requested by the <code>startScreencast</code>.
 	/// </summary>
 	[Event(ProtocolName.Page.ScreencastFrame)]
+	[SupportedBy("Chrome")]
 	public class ScreencastFrameEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/ScreencastFrameMetadata.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameMetadata.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Page/ScreencastFrameMetadata.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameMetadata.cs
index 6709c08..e62e92e 100644
--- a/source/ChromeDevTools/Protocol/Page/ScreencastFrameMetadata.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastFrameMetadata.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Screencast frame metadata
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ScreencastFrameMetadata
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/ScreencastVisibilityChangedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastVisibilityChangedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/ScreencastVisibilityChangedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/ScreencastVisibilityChangedEvent.cs
index 1d682ac..791d3c7 100644
--- a/source/ChromeDevTools/Protocol/Page/ScreencastVisibilityChangedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/ScreencastVisibilityChangedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Fired when the page with currently enabled screencast was shown or hidden </code>.
 	/// </summary>
 	[Event(ProtocolName.Page.ScreencastVisibilityChanged)]
+	[SupportedBy("Chrome")]
 	public class ScreencastVisibilityChangedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs
new file mode 100644
index 0000000..4ac117f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommand.cs
@@ -0,0 +1,35 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Searches for given string in resource content.
+	/// </summary>
+	[Command(ProtocolName.Page.SearchInResource)]
+	[SupportedBy("Chrome")]
+	public class SearchInResourceCommand
+	{
+		/// <summary>
+		/// Gets or sets Frame id for resource to search in.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the resource to search in.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets String to search for.
+		/// </summary>
+		public string Query { get; set; }
+		/// <summary>
+		/// Gets or sets If true, search is case sensitive.
+		/// </summary>
+		public bool CaseSensitive { get; set; }
+		/// <summary>
+		/// Gets or sets If true, treats string parameter as regex.
+		/// </summary>
+		public bool IsRegex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/SearchInResourceCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Page/SearchInResourceCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommandResponse.cs
index 760343d..6630c6b 100644
--- a/source/ChromeDevTools/Protocol/Page/SearchInResourceCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SearchInResourceCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Searches for given string in resource content.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SearchInResource)]
+	[SupportedBy("Chrome")]
 	public class SearchInResourceCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetColorPickerEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetColorPickerEnabledCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/SetColorPickerEnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetColorPickerEnabledCommand.cs
index ced5f8c..a84b0f0 100644
--- a/source/ChromeDevTools/Protocol/Page/SetColorPickerEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetColorPickerEnabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Shows / hides color picker
 	/// </summary>
 	[Command(ProtocolName.Page.SetColorPickerEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetColorPickerEnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetColorPickerEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetColorPickerEnabledCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/SetColorPickerEnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetColorPickerEnabledCommandResponse.cs
index 6c0eb7e..28a7f2d 100644
--- a/source/ChromeDevTools/Protocol/Page/SetColorPickerEnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetColorPickerEnabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Shows / hides color picker
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetColorPickerEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetColorPickerEnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/SetDeviceMetricsOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Page/SetDeviceMetricsOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
index a01618b..4b397a0 100644
--- a/source/ChromeDevTools/Protocol/Page/SetDeviceMetricsOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media query results).
 	/// </summary>
 	[Command(ProtocolName.Page.SetDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceMetricsOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetDeviceMetricsOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Page/SetDeviceMetricsOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommandResponse.cs
index 847a520..08ba300 100644
--- a/source/ChromeDevTools/Protocol/Page/SetDeviceMetricsOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceMetricsOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media query results).
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetDeviceMetricsOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceMetricsOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/SetDeviceOrientationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/SetDeviceOrientationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs
index 27097e2..0648db9 100644
--- a/source/ChromeDevTools/Protocol/Page/SetDeviceOrientationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Overrides the Device Orientation.
 	/// </summary>
 	[Command(ProtocolName.Page.SetDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceOrientationOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetDeviceOrientationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/SetDeviceOrientationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommandResponse.cs
index 495c082..a7c58db 100644
--- a/source/ChromeDevTools/Protocol/Page/SetDeviceOrientationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDeviceOrientationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Overrides the Device Orientation.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetDeviceOrientationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetDeviceOrientationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs
new file mode 100644
index 0000000..ce0c9a9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Sets given markup as the document's HTML.
+	/// </summary>
+	[Command(ProtocolName.Page.SetDocumentContent)]
+	[SupportedBy("Chrome")]
+	public class SetDocumentContentCommand
+	{
+		/// <summary>
+		/// Gets or sets Frame id to set HTML for.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets HTML content to set.
+		/// </summary>
+		public string Html { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommandResponse.cs
new file mode 100644
index 0000000..c9e2847
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetDocumentContentCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Sets given markup as the document's HTML.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SetDocumentContent)]
+	[SupportedBy("Chrome")]
+	public class SetDocumentContentCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/SetGeolocationOverrideCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Page/SetGeolocationOverrideCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs
index 8f52c0e..c22a45e 100644
--- a/source/ChromeDevTools/Protocol/Page/SetGeolocationOverrideCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.
 	/// </summary>
 	[Command(ProtocolName.Page.SetGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetGeolocationOverrideCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetGeolocationOverrideCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Page/SetGeolocationOverrideCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommandResponse.cs
index 398db3f..2e75839 100644
--- a/source/ChromeDevTools/Protocol/Page/SetGeolocationOverrideCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetGeolocationOverrideCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetGeolocationOverride)]
+	[SupportedBy("Chrome")]
 	public class SetGeolocationOverrideCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/SetOverlayMessageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetOverlayMessageCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/SetOverlayMessageCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetOverlayMessageCommand.cs
index f88abcf..81a445c 100644
--- a/source/ChromeDevTools/Protocol/Page/SetOverlayMessageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetOverlayMessageCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Sets overlay message.
 	/// </summary>
 	[Command(ProtocolName.Page.SetOverlayMessage)]
+	[SupportedBy("Chrome")]
 	public class SetOverlayMessageCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetOverlayMessageCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetOverlayMessageCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Page/SetOverlayMessageCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetOverlayMessageCommandResponse.cs
index 0a9854b..bf704b8 100644
--- a/source/ChromeDevTools/Protocol/Page/SetOverlayMessageCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetOverlayMessageCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Sets overlay message.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetOverlayMessage)]
+	[SupportedBy("Chrome")]
 	public class SetOverlayMessageCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/SetShowViewportSizeOnResizeCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetShowViewportSizeOnResizeCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Page/SetShowViewportSizeOnResizeCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetShowViewportSizeOnResizeCommand.cs
index 97f539e..0eaaacf 100644
--- a/source/ChromeDevTools/Protocol/Page/SetShowViewportSizeOnResizeCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetShowViewportSizeOnResizeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Paints viewport size upon main frame resize.
 	/// </summary>
 	[Command(ProtocolName.Page.SetShowViewportSizeOnResize)]
+	[SupportedBy("Chrome")]
 	public class SetShowViewportSizeOnResizeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetShowViewportSizeOnResizeCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetShowViewportSizeOnResizeCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/SetShowViewportSizeOnResizeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetShowViewportSizeOnResizeCommandResponse.cs
index 5e76267..6dc0610 100644
--- a/source/ChromeDevTools/Protocol/Page/SetShowViewportSizeOnResizeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetShowViewportSizeOnResizeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Paints viewport size upon main frame resize.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetShowViewportSizeOnResize)]
+	[SupportedBy("Chrome")]
 	public class SetShowViewportSizeOnResizeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/SetTouchEmulationEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/SetTouchEmulationEnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs
index c488f1f..b32af7e 100644
--- a/source/ChromeDevTools/Protocol/Page/SetTouchEmulationEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Toggles mouse event-based touch event emulation.
 	/// </summary>
 	[Command(ProtocolName.Page.SetTouchEmulationEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetTouchEmulationEnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommandResponse.cs
new file mode 100644
index 0000000..5b7d5cc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/SetTouchEmulationEnabledCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
+{
+	/// <summary>
+	/// Toggles mouse event-based touch event emulation.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SetTouchEmulationEnabled)]
+	[SupportedBy("Chrome")]
+	public class SetTouchEmulationEnabledCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/StartScreencastCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Page/StartScreencastCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
index df4b637..271a6eb 100644
--- a/source/ChromeDevTools/Protocol/Page/StartScreencastCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Starts sending each frame using the <code>screencastFrame</code> event.
 	/// </summary>
 	[Command(ProtocolName.Page.StartScreencast)]
+	[SupportedBy("Chrome")]
 	public class StartScreencastCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/StartScreencastCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/StartScreencastCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommandResponse.cs
index 1fc178c..6fa61b5 100644
--- a/source/ChromeDevTools/Protocol/Page/StartScreencastCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StartScreencastCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Starts sending each frame using the <code>screencastFrame</code> event.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.StartScreencast)]
+	[SupportedBy("Chrome")]
 	public class StartScreencastCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/StopScreencastCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/StopScreencastCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs
index b34a9b0..5ad794d 100644
--- a/source/ChromeDevTools/Protocol/Page/StopScreencastCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Stops sending each frame in the <code>screencastFrame</code>.
 	/// </summary>
 	[Command(ProtocolName.Page.StopScreencast)]
+	[SupportedBy("Chrome")]
 	public class StopScreencastCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/StopScreencastCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/StopScreencastCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommandResponse.cs
index 5a0ad85..ffe0151 100644
--- a/source/ChromeDevTools/Protocol/Page/StopScreencastCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Page/StopScreencastCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Page
 {
 	/// <summary>
 	/// Stops sending each frame in the <code>screencastFrame</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.StopScreencast)]
+	[SupportedBy("Chrome")]
 	public class StopScreencastCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Power/CanProfilePowerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Power/CanProfilePowerCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Power/CanProfilePowerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/CanProfilePowerCommand.cs
index 85060a9..f11e39b 100644
--- a/source/ChromeDevTools/Protocol/Power/CanProfilePowerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/CanProfilePowerCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Tells whether power profiling is supported.
 	/// </summary>
 	[Command(ProtocolName.Power.CanProfilePower)]
+	[SupportedBy("Chrome")]
 	public class CanProfilePowerCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Power/CanProfilePowerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Power/CanProfilePowerCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Power/CanProfilePowerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/CanProfilePowerCommandResponse.cs
index e40811b..4b44533 100644
--- a/source/ChromeDevTools/Protocol/Power/CanProfilePowerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/CanProfilePowerCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Tells whether power profiling is supported.
 	/// </summary>
 	[CommandResponse(ProtocolName.Power.CanProfilePower)]
+	[SupportedBy("Chrome")]
 	public class CanProfilePowerCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Power/DataAvailableEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Power/DataAvailableEvent.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Power/DataAvailableEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/DataAvailableEvent.cs
index 2f74065..2b4b5d0 100644
--- a/source/ChromeDevTools/Protocol/Power/DataAvailableEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/DataAvailableEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	[Event(ProtocolName.Power.DataAvailable)]
+	[SupportedBy("Chrome")]
 	public class DataAvailableEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Power/EndCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Power/EndCommand.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Power/EndCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/EndCommand.cs
index 535f67b..977f1e5 100644
--- a/source/ChromeDevTools/Protocol/Power/EndCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/EndCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Stop power events collection.
 	/// </summary>
 	[Command(ProtocolName.Power.End)]
+	[SupportedBy("Chrome")]
 	public class EndCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Power/EndCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Power/EndCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Power/EndCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/EndCommandResponse.cs
index 731af25..05d358e 100644
--- a/source/ChromeDevTools/Protocol/Power/EndCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/EndCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Stop power events collection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Power.End)]
+	[SupportedBy("Chrome")]
 	public class EndCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Power/GetAccuracyLevelCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Power/GetAccuracyLevelCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Power/GetAccuracyLevelCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/GetAccuracyLevelCommand.cs
index 03f6c55..2e26ac9 100644
--- a/source/ChromeDevTools/Protocol/Power/GetAccuracyLevelCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/GetAccuracyLevelCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Describes the accuracy level of the data provider.
 	/// </summary>
 	[Command(ProtocolName.Power.GetAccuracyLevel)]
+	[SupportedBy("Chrome")]
 	public class GetAccuracyLevelCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Power/GetAccuracyLevelCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Power/GetAccuracyLevelCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Power/GetAccuracyLevelCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/GetAccuracyLevelCommandResponse.cs
index e1c5e05..1ba284d 100644
--- a/source/ChromeDevTools/Protocol/Power/GetAccuracyLevelCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/GetAccuracyLevelCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Describes the accuracy level of the data provider.
 	/// </summary>
 	[CommandResponse(ProtocolName.Power.GetAccuracyLevel)]
+	[SupportedBy("Chrome")]
 	public class GetAccuracyLevelCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Power/PowerEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Power/PowerEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Power/PowerEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/PowerEvent.cs
index e2acf00..bdf0d3c 100644
--- a/source/ChromeDevTools/Protocol/Power/PowerEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/PowerEvent.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// PowerEvent item
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PowerEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Power/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Power/StartCommand.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Power/StartCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/StartCommand.cs
index e384c96..1e07327 100644
--- a/source/ChromeDevTools/Protocol/Power/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/StartCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Start power events collection.
 	/// </summary>
 	[Command(ProtocolName.Power.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Power/StartCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Power/StartCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Power/StartCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Power/StartCommandResponse.cs
index 5c06d48..f6e5217 100644
--- a/source/ChromeDevTools/Protocol/Power/StartCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Power/StartCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Power
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Power
 {
 	/// <summary>
 	/// Start power events collection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Power.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/CPUProfile.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/CPUProfile.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Profiler/CPUProfile.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/CPUProfile.cs
index 241a233..099f81d 100644
--- a/source/ChromeDevTools/Protocol/Profiler/CPUProfile.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/CPUProfile.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	/// <summary>
 	/// Profile.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CPUProfile
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Profiler/CPUProfileNode.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/CPUProfileNode.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Profiler/CPUProfileNode.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/CPUProfileNode.cs
index a27f091..81f516b 100644
--- a/source/ChromeDevTools/Protocol/Profiler/CPUProfileNode.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/CPUProfileNode.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	/// <summary>
 	/// CPU Profile node. Holds callsite information, execution statistics and child nodes.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CPUProfileNode
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Profiler/ConsoleProfileFinishedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/ConsoleProfileFinishedEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Profiler/ConsoleProfileFinishedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/ConsoleProfileFinishedEvent.cs
index 2a4ff47..95fbc59 100644
--- a/source/ChromeDevTools/Protocol/Profiler/ConsoleProfileFinishedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/ConsoleProfileFinishedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Event(ProtocolName.Profiler.ConsoleProfileFinished)]
+	[SupportedBy("Chrome")]
 	public class ConsoleProfileFinishedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Profiler/ConsoleProfileStartedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/ConsoleProfileStartedEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Profiler/ConsoleProfileStartedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/ConsoleProfileStartedEvent.cs
index 01ff4d0..ec42fc3 100644
--- a/source/ChromeDevTools/Protocol/Profiler/ConsoleProfileStartedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/ConsoleProfileStartedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	/// <summary>
 	/// Sent when new profile recodring is started using console.profile() call.
 	/// </summary>
 	[Event(ProtocolName.Profiler.ConsoleProfileStarted)]
+	[SupportedBy("Chrome")]
 	public class ConsoleProfileStartedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Profiler/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs
similarity index 66%
rename from source/ChromeDevTools/Protocol/Profiler/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs
index a3892f8..c30db8a 100644
--- a/source/ChromeDevTools/Protocol/Profiler/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Profiler/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommandResponse.cs
index 8627632..6b293e5 100644
--- a/source/ChromeDevTools/Protocol/Profiler/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/DisableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[CommandResponse(ProtocolName.Profiler.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs
similarity index 66%
rename from source/ChromeDevTools/Protocol/Profiler/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs
index a2873d2..a6acb93 100644
--- a/source/ChromeDevTools/Protocol/Profiler/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Profiler/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommandResponse.cs
index 5348881..2af7789 100644
--- a/source/ChromeDevTools/Protocol/Profiler/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/EnableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[CommandResponse(ProtocolName.Profiler.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/PositionTickInfo.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/PositionTickInfo.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Profiler/PositionTickInfo.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/PositionTickInfo.cs
index a594127..3fc566b 100644
--- a/source/ChromeDevTools/Protocol/Profiler/PositionTickInfo.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/PositionTickInfo.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	/// <summary>
 	/// Specifies a number of samples attributed to a certain source position.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PositionTickInfo
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Profiler/SetSamplingIntervalCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Profiler/SetSamplingIntervalCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs
index e7609f6..9710ee9 100644
--- a/source/ChromeDevTools/Protocol/Profiler/SetSamplingIntervalCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	/// <summary>
 	/// Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
 	/// </summary>
 	[Command(ProtocolName.Profiler.SetSamplingInterval)]
+	[SupportedBy("Chrome")]
 	public class SetSamplingIntervalCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Profiler/SetSamplingIntervalCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Profiler/SetSamplingIntervalCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommandResponse.cs
index b124bf1..2c713aa 100644
--- a/source/ChromeDevTools/Protocol/Profiler/SetSamplingIntervalCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/SetSamplingIntervalCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	/// <summary>
 	/// Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
 	/// </summary>
 	[CommandResponse(ProtocolName.Profiler.SetSamplingInterval)]
+	[SupportedBy("Chrome")]
 	public class SetSamplingIntervalCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs
similarity index 66%
rename from source/ChromeDevTools/Protocol/Profiler/StartCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs
index d5912a3..9cf4ada 100644
--- a/source/ChromeDevTools/Protocol/Profiler/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/StartCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Profiler/StartCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommandResponse.cs
index 043643b..ef64f59 100644
--- a/source/ChromeDevTools/Protocol/Profiler/StartCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StartCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[CommandResponse(ProtocolName.Profiler.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/StopCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs
similarity index 65%
rename from source/ChromeDevTools/Protocol/Profiler/StopCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs
index 394b16c..1ba1aca 100644
--- a/source/ChromeDevTools/Protocol/Profiler/StopCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[Command(ProtocolName.Profiler.Stop)]
+	[SupportedBy("Chrome")]
 	public class StopCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Profiler/StopCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Profiler/StopCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommandResponse.cs
index 22fd014..04e1885 100644
--- a/source/ChromeDevTools/Protocol/Profiler/StopCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Profiler/StopCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Profiler
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Profiler
 {
 	[CommandResponse(ProtocolName.Profiler.Stop)]
+	[SupportedBy("Chrome")]
 	public class StopCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ProtocolName.cs b/source/ChromeDevTools/Protocol/Chrome/ProtocolName.cs
similarity index 99%
rename from source/ChromeDevTools/Protocol/ProtocolName.cs
rename to source/ChromeDevTools/Protocol/Chrome/ProtocolName.cs
index f066cad..867d4a7 100644
--- a/source/ChromeDevTools/Protocol/ProtocolName.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ProtocolName.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome
 {
 	public static class ProtocolName
 	{
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetContinuousPaintingEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetContinuousPaintingEnabledCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Rendering/SetContinuousPaintingEnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetContinuousPaintingEnabledCommand.cs
index b8f30fe..b8f6cb7 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetContinuousPaintingEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetContinuousPaintingEnabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend enables continuous painting
 	/// </summary>
 	[Command(ProtocolName.Rendering.SetContinuousPaintingEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetContinuousPaintingEnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetContinuousPaintingEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetContinuousPaintingEnabledCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Rendering/SetContinuousPaintingEnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetContinuousPaintingEnabledCommandResponse.cs
index 6846ab8..60833d6 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetContinuousPaintingEnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetContinuousPaintingEnabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend enables continuous painting
 	/// </summary>
 	[CommandResponse(ProtocolName.Rendering.SetContinuousPaintingEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetContinuousPaintingEnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowDebugBordersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowDebugBordersCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowDebugBordersCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowDebugBordersCommand.cs
index 2a23eb3..cbb860c 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowDebugBordersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowDebugBordersCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows debug borders on layers
 	/// </summary>
 	[Command(ProtocolName.Rendering.SetShowDebugBorders)]
+	[SupportedBy("Chrome")]
 	public class SetShowDebugBordersCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowDebugBordersCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowDebugBordersCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowDebugBordersCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowDebugBordersCommandResponse.cs
index 0046216..93d88e1 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowDebugBordersCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowDebugBordersCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows debug borders on layers
 	/// </summary>
 	[CommandResponse(ProtocolName.Rendering.SetShowDebugBorders)]
+	[SupportedBy("Chrome")]
 	public class SetShowDebugBordersCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowFPSCounterCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowFPSCounterCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowFPSCounterCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowFPSCounterCommand.cs
index e025e6c..ba4bdf2 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowFPSCounterCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowFPSCounterCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows the FPS counter
 	/// </summary>
 	[Command(ProtocolName.Rendering.SetShowFPSCounter)]
+	[SupportedBy("Chrome")]
 	public class SetShowFPSCounterCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowFPSCounterCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowFPSCounterCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowFPSCounterCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowFPSCounterCommandResponse.cs
index 86cc878..987b752 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowFPSCounterCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowFPSCounterCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows the FPS counter
 	/// </summary>
 	[CommandResponse(ProtocolName.Rendering.SetShowFPSCounter)]
+	[SupportedBy("Chrome")]
 	public class SetShowFPSCounterCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowPaintRectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowPaintRectsCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowPaintRectsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowPaintRectsCommand.cs
index af09136..46fa327 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowPaintRectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowPaintRectsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows paint rectangles
 	/// </summary>
 	[Command(ProtocolName.Rendering.SetShowPaintRects)]
+	[SupportedBy("Chrome")]
 	public class SetShowPaintRectsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowPaintRectsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowPaintRectsCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowPaintRectsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowPaintRectsCommandResponse.cs
index e888cb3..2b31d5f 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowPaintRectsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowPaintRectsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows paint rectangles
 	/// </summary>
 	[CommandResponse(ProtocolName.Rendering.SetShowPaintRects)]
+	[SupportedBy("Chrome")]
 	public class SetShowPaintRectsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowScrollBottleneckRectsCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowScrollBottleneckRectsCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowScrollBottleneckRectsCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowScrollBottleneckRectsCommand.cs
index f14745f..462ebec 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowScrollBottleneckRectsCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowScrollBottleneckRectsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows scroll bottleneck rects
 	/// </summary>
 	[Command(ProtocolName.Rendering.SetShowScrollBottleneckRects)]
+	[SupportedBy("Chrome")]
 	public class SetShowScrollBottleneckRectsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs
index a9c98e9..89528ea 100644
--- a/source/ChromeDevTools/Protocol/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Rendering/SetShowScrollBottleneckRectsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Rendering
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Rendering
 {
 	/// <summary>
 	/// Requests that backend shows scroll bottleneck rects
 	/// </summary>
 	[CommandResponse(ProtocolName.Rendering.SetShowScrollBottleneckRects)]
+	[SupportedBy("Chrome")]
 	public class SetShowScrollBottleneckRectsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/CallArgument.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Runtime/CallArgument.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs
index 1d76ce8..ebb935b 100644
--- a/source/ChromeDevTools/Protocol/Runtime/CallArgument.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallArgument.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CallArgument
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
new file mode 100644
index 0000000..390e3d5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommand.cs
@@ -0,0 +1,39 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Calls function with given declaration on the given object. Object group of the result is inherited from the target object.
+	/// </summary>
+	[Command(ProtocolName.Runtime.CallFunctionOn)]
+	[SupportedBy("Chrome")]
+	public class CallFunctionOnCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the object to call function on.
+		/// </summary>
+		public string ObjectId { get; set; }
+		/// <summary>
+		/// Gets or sets Declaration of the function to call.
+		/// </summary>
+		public string FunctionDeclaration { get; set; }
+		/// <summary>
+		/// Gets or sets Call arguments. All call arguments must belong to the same JavaScript world as the target object.
+		/// </summary>
+		public CallArgument[] Arguments { get; set; }
+		/// <summary>
+		/// Gets or sets Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state.
+		/// </summary>
+		public bool DoNotPauseOnExceptionsAndMuteConsole { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the result is expected to be a JSON object which should be sent by value.
+		/// </summary>
+		public bool ReturnByValue { get; set; }
+		/// <summary>
+		/// Gets or sets Whether preview should be generated for the result.
+		/// </summary>
+		public bool GeneratePreview { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs
new file mode 100644
index 0000000..9b8894e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CallFunctionOnCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Calls function with given declaration on the given object. Object group of the result is inherited from the target object.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.CallFunctionOn)]
+	[SupportedBy("Chrome")]
+	public class CallFunctionOnCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Call result.
+		/// </summary>
+		public RemoteObject Result { get; set; }
+		/// <summary>
+		/// Gets or sets True if the result was thrown during the evaluation.
+		/// </summary>
+		public bool WasThrown { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/CustomPreview.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/CustomPreview.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Runtime/CustomPreview.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/CustomPreview.cs
index f3ab126..472ced7 100644
--- a/source/ChromeDevTools/Protocol/Runtime/CustomPreview.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/CustomPreview.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class CustomPreview
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs
new file mode 100644
index 0000000..f846d3c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Disables reporting of execution contexts creation.
+	/// </summary>
+	[Command(ProtocolName.Runtime.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommandResponse.cs
new file mode 100644
index 0000000..9ad2d97
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/DisableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Disables reporting of execution contexts creation.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs
new file mode 100644
index 0000000..e35efcc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context.
+	/// </summary>
+	[Command(ProtocolName.Runtime.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommandResponse.cs
new file mode 100644
index 0000000..15b4749
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EnableCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/EntryPreview.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EntryPreview.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Runtime/EntryPreview.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/EntryPreview.cs
index 67efef4..6e94902 100644
--- a/source/ChromeDevTools/Protocol/Runtime/EntryPreview.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EntryPreview.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class EntryPreview
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/EvaluateCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Runtime/EvaluateCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
index 31ff80d..22fd61d 100644
--- a/source/ChromeDevTools/Protocol/Runtime/EvaluateCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Evaluates expression on global object.
 	/// </summary>
 	[Command(ProtocolName.Runtime.Evaluate)]
+	[SupportedBy("Chrome")]
 	public class EvaluateCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/EvaluateCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Runtime/EvaluateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs
index ccbe5e5..8a86877 100644
--- a/source/ChromeDevTools/Protocol/Runtime/EvaluateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EvaluateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Evaluates expression on global object.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.Evaluate)]
+	[SupportedBy("Chrome")]
 	public class EvaluateCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/EventListener.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/EventListener.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Runtime/EventListener.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/EventListener.cs
index 7b8f993..5fa1515 100644
--- a/source/ChromeDevTools/Protocol/Runtime/EventListener.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/EventListener.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Object event listener.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class EventListener
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextCreatedEvent.cs
new file mode 100644
index 0000000..8e60972
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextCreatedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Issued when new execution context is created.
+	/// </summary>
+	[Event(ProtocolName.Runtime.ExecutionContextCreated)]
+	[SupportedBy("Chrome")]
+	public class ExecutionContextCreatedEvent
+	{
+		/// <summary>
+		/// Gets or sets A newly created execution contex.
+		/// </summary>
+		public ExecutionContextDescription Context { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextDescription.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Runtime/ExecutionContextDescription.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs
index 30555f3..6048c31 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextDescription.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDescription.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Description of an isolated world.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ExecutionContextDescription
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextDestroyedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDestroyedEvent.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Runtime/ExecutionContextDestroyedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDestroyedEvent.cs
index 764b0ad..3b2747e 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextDestroyedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextDestroyedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Issued when execution context is destroyed.
 	/// </summary>
 	[Event(ProtocolName.Runtime.ExecutionContextDestroyed)]
+	[SupportedBy("Chrome")]
 	public class ExecutionContextDestroyedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextsClearedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextsClearedEvent.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Runtime/ExecutionContextsClearedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextsClearedEvent.cs
index 1cd1fd9..34a2225 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextsClearedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ExecutionContextsClearedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Issued when all executionContexts were cleared in browser
 	/// </summary>
 	[Event(ProtocolName.Runtime.ExecutionContextsCleared)]
+	[SupportedBy("Chrome")]
 	public class ExecutionContextsClearedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/GetEventListenersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Runtime/GetEventListenersCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommand.cs
index da5fa79..dbd6756 100644
--- a/source/ChromeDevTools/Protocol/Runtime/GetEventListenersCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Returns event listeners of the given object.
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetEventListeners)]
+	[SupportedBy("Chrome")]
 	public class GetEventListenersCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/GetEventListenersCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Runtime/GetEventListenersCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommandResponse.cs
index 3b2104f..05ef85d 100644
--- a/source/ChromeDevTools/Protocol/Runtime/GetEventListenersCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetEventListenersCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Returns event listeners of the given object.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.GetEventListeners)]
+	[SupportedBy("Chrome")]
 	public class GetEventListenersCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/GetPropertiesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Runtime/GetPropertiesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs
index 95885ee..23f779d 100644
--- a/source/ChromeDevTools/Protocol/Runtime/GetPropertiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Returns properties of a given object. Object group of the result is inherited from the target object.
 	/// </summary>
 	[Command(ProtocolName.Runtime.GetProperties)]
+	[SupportedBy("Chrome")]
 	public class GetPropertiesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/GetPropertiesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Runtime/GetPropertiesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs
index 7775f5f..da60a09 100644
--- a/source/ChromeDevTools/Protocol/Runtime/GetPropertiesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/GetPropertiesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Returns properties of a given object. Object group of the result is inherited from the target object.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.GetProperties)]
+	[SupportedBy("Chrome")]
 	public class GetPropertiesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/InternalPropertyDescriptor.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/InternalPropertyDescriptor.cs
new file mode 100644
index 0000000..ed72412
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/InternalPropertyDescriptor.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Object internal property descriptor. This property isn't normally visible in JavaScript code.
+	/// </summary>
+	[SupportedBy("Chrome")]
+	public class InternalPropertyDescriptor
+	{
+		/// <summary>
+		/// Gets or sets Conventional property name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets The value associated with the property.
+		/// </summary>
+		public RemoteObject Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/IsRunRequiredCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/IsRunRequiredCommand.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Runtime/IsRunRequiredCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/IsRunRequiredCommand.cs
index 1bb5cee..ec7816b 100644
--- a/source/ChromeDevTools/Protocol/Runtime/IsRunRequiredCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/IsRunRequiredCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	[Command(ProtocolName.Runtime.IsRunRequired)]
+	[SupportedBy("Chrome")]
 	public class IsRunRequiredCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/IsRunRequiredCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/IsRunRequiredCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Runtime/IsRunRequiredCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/IsRunRequiredCommandResponse.cs
index 37414a6..864aaa4 100644
--- a/source/ChromeDevTools/Protocol/Runtime/IsRunRequiredCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/IsRunRequiredCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	[CommandResponse(ProtocolName.Runtime.IsRunRequired)]
+	[SupportedBy("Chrome")]
 	public class IsRunRequiredCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/ObjectPreview.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ObjectPreview.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Runtime/ObjectPreview.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/ObjectPreview.cs
index ab80790..d02d520 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ObjectPreview.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ObjectPreview.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Object containing abbreviated remote object value.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ObjectPreview
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/PropertyDescriptor.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/PropertyDescriptor.cs
similarity index 95%
rename from source/ChromeDevTools/Protocol/Runtime/PropertyDescriptor.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/PropertyDescriptor.cs
index f197929..21cb823 100644
--- a/source/ChromeDevTools/Protocol/Runtime/PropertyDescriptor.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/PropertyDescriptor.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Object property descriptor.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PropertyDescriptor
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/PropertyPreview.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/PropertyPreview.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Runtime/PropertyPreview.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/PropertyPreview.cs
index 6a3e09d..15c562a 100644
--- a/source/ChromeDevTools/Protocol/Runtime/PropertyPreview.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/PropertyPreview.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class PropertyPreview
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs
new file mode 100644
index 0000000..5698930
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Releases remote object with given id.
+	/// </summary>
+	[Command(ProtocolName.Runtime.ReleaseObject)]
+	[SupportedBy("Chrome")]
+	public class ReleaseObjectCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the object to release.
+		/// </summary>
+		public string ObjectId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommandResponse.cs
new file mode 100644
index 0000000..957e3f7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Releases remote object with given id.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.ReleaseObject)]
+	[SupportedBy("Chrome")]
+	public class ReleaseObjectCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs
new file mode 100644
index 0000000..f8fa45b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Releases all remote objects that belong to a given group.
+	/// </summary>
+	[Command(ProtocolName.Runtime.ReleaseObjectGroup)]
+	[SupportedBy("Chrome")]
+	public class ReleaseObjectGroupCommand
+	{
+		/// <summary>
+		/// Gets or sets Symbolic object group name.
+		/// </summary>
+		public string ObjectGroup { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommandResponse.cs
new file mode 100644
index 0000000..0f271c7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/ReleaseObjectGroupCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Releases all remote objects that belong to a given group.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.ReleaseObjectGroup)]
+	[SupportedBy("Chrome")]
+	public class ReleaseObjectGroupCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/RemoteObject.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Runtime/RemoteObject.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs
index f0ca8e3..ca59914 100644
--- a/source/ChromeDevTools/Protocol/Runtime/RemoteObject.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RemoteObject.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	/// <summary>
 	/// Mirror object referencing original JavaScript object.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class RemoteObject
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommand.cs
new file mode 100644
index 0000000..82494c8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Tells inspected instance(worker or page) that it can run in case it was started paused.
+	/// </summary>
+	[Command(ProtocolName.Runtime.Run)]
+	[SupportedBy("Chrome")]
+	public class RunCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommandResponse.cs
new file mode 100644
index 0000000..33eac33
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/RunCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
+{
+	/// <summary>
+	/// Tells inspected instance(worker or page) that it can run in case it was started paused.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.Run)]
+	[SupportedBy("Chrome")]
+	public class RunCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/SetCustomObjectFormatterEnabledCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Runtime/SetCustomObjectFormatterEnabledCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs
index 2916d78..7997001 100644
--- a/source/ChromeDevTools/Protocol/Runtime/SetCustomObjectFormatterEnabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	[Command(ProtocolName.Runtime.SetCustomObjectFormatterEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetCustomObjectFormatterEnabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs
index 2101419..56749da 100644
--- a/source/ChromeDevTools/Protocol/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Runtime/SetCustomObjectFormatterEnabledCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Runtime
 {
 	[CommandResponse(ProtocolName.Runtime.SetCustomObjectFormatterEnabled)]
+	[SupportedBy("Chrome")]
 	public class SetCustomObjectFormatterEnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/DebugOnStartUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DebugOnStartUpdatedEvent.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/ServiceWorker/DebugOnStartUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DebugOnStartUpdatedEvent.cs
index 6d5b0c4..d92dda4 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/DebugOnStartUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DebugOnStartUpdatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.DebugOnStartUpdated)]
+	[SupportedBy("Chrome")]
 	public class DebugOnStartUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/DeliverPushMessageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/ServiceWorker/DeliverPushMessageCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs
index eb57b76..10bd4a5 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/DeliverPushMessageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.DeliverPushMessage)]
+	[SupportedBy("Chrome")]
 	public class DeliverPushMessageCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/DeliverPushMessageCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/ServiceWorker/DeliverPushMessageCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommandResponse.cs
index 7f3437f..71a8762 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/DeliverPushMessageCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DeliverPushMessageCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.DeliverPushMessage)]
+	[SupportedBy("Chrome")]
 	public class DeliverPushMessageCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs
similarity index 66%
rename from source/ChromeDevTools/Protocol/ServiceWorker/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs
index c77d368..28617ed 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommandResponse.cs
similarity index 67%
rename from source/ChromeDevTools/Protocol/ServiceWorker/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommandResponse.cs
index ceea311..699bba1 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DisableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/DispatchMessageEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchMessageEvent.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/ServiceWorker/DispatchMessageEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchMessageEvent.cs
index eea05f7..5bf2789 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/DispatchMessageEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/DispatchMessageEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.DispatchMessage)]
+	[SupportedBy("Chrome")]
 	public class DispatchMessageEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs
similarity index 65%
rename from source/ChromeDevTools/Protocol/ServiceWorker/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs
index 53332b6..a9d6087 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommandResponse.cs
similarity index 67%
rename from source/ChromeDevTools/Protocol/ServiceWorker/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommandResponse.cs
index f918719..e46132f 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/EnableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/InspectWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/ServiceWorker/InspectWorkerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs
index f92a03e..136dd34 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/InspectWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.InspectWorker)]
+	[SupportedBy("Chrome")]
 	public class InspectWorkerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/InspectWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommandResponse.cs
similarity index 69%
rename from source/ChromeDevTools/Protocol/ServiceWorker/InspectWorkerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommandResponse.cs
index c273a65..bec06cc 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/InspectWorkerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/InspectWorkerCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.InspectWorker)]
+	[SupportedBy("Chrome")]
 	public class InspectWorkerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/SendMessageCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SendMessageCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/ServiceWorker/SendMessageCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SendMessageCommand.cs
index 35fdf2c..01d49d3 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/SendMessageCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SendMessageCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.SendMessage)]
+	[SupportedBy("Chrome")]
 	public class SendMessageCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/SendMessageCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SendMessageCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/ServiceWorker/SendMessageCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SendMessageCommandResponse.cs
index 0b08ccf..cce3efa 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/SendMessageCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SendMessageCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.SendMessage)]
+	[SupportedBy("Chrome")]
 	public class SendMessageCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerErrorMessage.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerErrorMessage.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerErrorMessage.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerErrorMessage.cs
index 7135292..a84fe59 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerErrorMessage.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerErrorMessage.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	/// <summary>
 	/// ServiceWorker error message.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ServiceWorkerErrorMessage
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerRegistration.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerRegistration.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs
index c1e9822..e024109 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerRegistration.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerRegistration.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	/// <summary>
 	/// ServiceWorker registration.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ServiceWorkerRegistration
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersion.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersion.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs
index 399006b..ce7b3f0 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersion.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersion.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	/// <summary>
 	/// ServiceWorker version.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class ServiceWorkerVersion
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersionRunningStatus.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersionRunningStatus.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersionRunningStatus.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersionRunningStatus.cs
index fcff8ef..2eb3819 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersionRunningStatus.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersionRunningStatus.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker{
 	/// <summary>
 	/// 
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersionStatus.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersionStatus.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersionStatus.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersionStatus.cs
index 50b8d87..921ceba 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/ServiceWorkerVersionStatus.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/ServiceWorkerVersionStatus.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker{
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker{
 	/// <summary>
 	/// 
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/SetDebugOnStartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetDebugOnStartCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/ServiceWorker/SetDebugOnStartCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetDebugOnStartCommand.cs
index 3f50326..337f373 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/SetDebugOnStartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetDebugOnStartCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.SetDebugOnStart)]
+	[SupportedBy("Chrome")]
 	public class SetDebugOnStartCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/SetDebugOnStartCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetDebugOnStartCommandResponse.cs
similarity index 69%
rename from source/ChromeDevTools/Protocol/ServiceWorker/SetDebugOnStartCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetDebugOnStartCommandResponse.cs
index ab0b1da..4fcc34c 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/SetDebugOnStartCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/SetDebugOnStartCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.SetDebugOnStart)]
+	[SupportedBy("Chrome")]
 	public class SetDebugOnStartCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/StartWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/ServiceWorker/StartWorkerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs
index 334c046..6de67a0 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/StartWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.StartWorker)]
+	[SupportedBy("Chrome")]
 	public class StartWorkerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/StartWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/ServiceWorker/StartWorkerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommandResponse.cs
index 40c9939..b0cd3b4 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/StartWorkerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StartWorkerCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.StartWorker)]
+	[SupportedBy("Chrome")]
 	public class StartWorkerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/StopCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/ServiceWorker/StopCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopCommand.cs
index 20e60a4..bcbeb85 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/StopCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Stop)]
+	[SupportedBy("Chrome")]
 	public class StopCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/StopCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopCommandResponse.cs
similarity index 67%
rename from source/ChromeDevTools/Protocol/ServiceWorker/StopCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopCommandResponse.cs
index 0626596..c9a27c0 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/StopCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.Stop)]
+	[SupportedBy("Chrome")]
 	public class StopCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/StopWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/ServiceWorker/StopWorkerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs
index 4d059a7..95c07ef 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/StopWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.StopWorker)]
+	[SupportedBy("Chrome")]
 	public class StopWorkerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/StopWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/ServiceWorker/StopWorkerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommandResponse.cs
index 7772ab4..0779737 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/StopWorkerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/StopWorkerCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.StopWorker)]
+	[SupportedBy("Chrome")]
 	public class StopWorkerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/UnregisterCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/ServiceWorker/UnregisterCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs
index 3c2e179..d9c379c 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/UnregisterCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.Unregister)]
+	[SupportedBy("Chrome")]
 	public class UnregisterCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/UnregisterCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommandResponse.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/ServiceWorker/UnregisterCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommandResponse.cs
index cd36329..121b0e1 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/UnregisterCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UnregisterCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.Unregister)]
+	[SupportedBy("Chrome")]
 	public class UnregisterCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/UpdateRegistrationCommand.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/ServiceWorker/UpdateRegistrationCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs
index 2bbdb75..45b1005 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/UpdateRegistrationCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Command(ProtocolName.ServiceWorker.UpdateRegistration)]
+	[SupportedBy("Chrome")]
 	public class UpdateRegistrationCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/UpdateRegistrationCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/ServiceWorker/UpdateRegistrationCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommandResponse.cs
index b207931..369893c 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/UpdateRegistrationCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/UpdateRegistrationCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[CommandResponse(ProtocolName.ServiceWorker.UpdateRegistration)]
+	[SupportedBy("Chrome")]
 	public class UpdateRegistrationCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerCreatedEvent.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/ServiceWorker/WorkerCreatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerCreatedEvent.cs
index 729ca5f..1fd1079 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerCreatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.WorkerCreated)]
+	[SupportedBy("Chrome")]
 	public class WorkerCreatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerErrorReportedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerErrorReportedEvent.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/ServiceWorker/WorkerErrorReportedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerErrorReportedEvent.cs
index b70c891..9b197a1 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerErrorReportedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerErrorReportedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.WorkerErrorReported)]
+	[SupportedBy("Chrome")]
 	public class WorkerErrorReportedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerRegistrationUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerRegistrationUpdatedEvent.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/ServiceWorker/WorkerRegistrationUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerRegistrationUpdatedEvent.cs
index 2a0c520..de092ce 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerRegistrationUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerRegistrationUpdatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.WorkerRegistrationUpdated)]
+	[SupportedBy("Chrome")]
 	public class WorkerRegistrationUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerTerminatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerTerminatedEvent.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/ServiceWorker/WorkerTerminatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerTerminatedEvent.cs
index 05151ff..ba8d6ee 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerTerminatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerTerminatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.WorkerTerminated)]
+	[SupportedBy("Chrome")]
 	public class WorkerTerminatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerVersionUpdatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerVersionUpdatedEvent.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/ServiceWorker/WorkerVersionUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerVersionUpdatedEvent.cs
index a117f0b..9d52bc5 100644
--- a/source/ChromeDevTools/Protocol/ServiceWorker/WorkerVersionUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/ServiceWorker/WorkerVersionUpdatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ServiceWorker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.ServiceWorker
 {
 	[Event(ProtocolName.ServiceWorker.WorkerVersionUpdated)]
+	[SupportedBy("Chrome")]
 	public class WorkerVersionUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Timeline/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/DisableCommand.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Timeline/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/DisableCommand.cs
index ce69179..29856f1 100644
--- a/source/ChromeDevTools/Protocol/Timeline/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[Command(ProtocolName.Timeline.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/DisableCommandResponse.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Timeline/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/DisableCommandResponse.cs
index 47efe1a..1208671 100644
--- a/source/ChromeDevTools/Protocol/Timeline/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[CommandResponse(ProtocolName.Timeline.Disable)]
+	[SupportedBy("Chrome")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/EnableCommand.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Timeline/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/EnableCommand.cs
index 4b0538a..2fa8ca4 100644
--- a/source/ChromeDevTools/Protocol/Timeline/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[Command(ProtocolName.Timeline.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/EnableCommandResponse.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Timeline/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/EnableCommandResponse.cs
index 1b0ecbd..469256d 100644
--- a/source/ChromeDevTools/Protocol/Timeline/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[CommandResponse(ProtocolName.Timeline.Enable)]
+	[SupportedBy("Chrome")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/EventRecordedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/EventRecordedEvent.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Timeline/EventRecordedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/EventRecordedEvent.cs
index a15c933..072f0b2 100644
--- a/source/ChromeDevTools/Protocol/Timeline/EventRecordedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/EventRecordedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[Event(ProtocolName.Timeline.EventRecorded)]
+	[SupportedBy("Chrome")]
 	public class EventRecordedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Timeline/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Timeline/StartCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommand.cs
index 9ae1dbe..5839d0e 100644
--- a/source/ChromeDevTools/Protocol/Timeline/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[Command(ProtocolName.Timeline.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Timeline/StartCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommandResponse.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/Timeline/StartCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommandResponse.cs
index 5b1256d..36c8997 100644
--- a/source/ChromeDevTools/Protocol/Timeline/StartCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/StartCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[CommandResponse(ProtocolName.Timeline.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/StopCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/StopCommand.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Timeline/StopCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/StopCommand.cs
index 771a172..89779b9 100644
--- a/source/ChromeDevTools/Protocol/Timeline/StopCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/StopCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[Command(ProtocolName.Timeline.Stop)]
+	[SupportedBy("Chrome")]
 	public class StopCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/StopCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/StopCommandResponse.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/Timeline/StopCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/StopCommandResponse.cs
index 2740f50..1de900f 100644
--- a/source/ChromeDevTools/Protocol/Timeline/StopCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/StopCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Deprecated.
 	/// </summary>
 	[CommandResponse(ProtocolName.Timeline.Stop)]
+	[SupportedBy("Chrome")]
 	public class StopCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Timeline/TimelineEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Timeline/TimelineEvent.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Timeline/TimelineEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Timeline/TimelineEvent.cs
index d25c7cb..5b704b8 100644
--- a/source/ChromeDevTools/Protocol/Timeline/TimelineEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Timeline/TimelineEvent.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Timeline
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Timeline
 {
 	/// <summary>
 	/// Timeline record contains information about the recorded activity.
 	/// </summary>
+	[SupportedBy("Chrome")]
 	public class TimelineEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Tracing/BufferUsageEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/BufferUsageEvent.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Tracing/BufferUsageEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/BufferUsageEvent.cs
index 27d5e40..d29bfc9 100644
--- a/source/ChromeDevTools/Protocol/Tracing/BufferUsageEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/BufferUsageEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	[Event(ProtocolName.Tracing.BufferUsage)]
+	[SupportedBy("Chrome")]
 	public class BufferUsageEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Tracing/DataCollectedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/DataCollectedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Tracing/DataCollectedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/DataCollectedEvent.cs
index ed287e1..e73fc2e 100644
--- a/source/ChromeDevTools/Protocol/Tracing/DataCollectedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/DataCollectedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Contains an bucket of collected trace events. When tracing is stopped collected events will be send as a sequence of dataCollected events followed by tracingComplete event.
 	/// </summary>
 	[Event(ProtocolName.Tracing.DataCollected)]
+	[SupportedBy("Chrome")]
 	public class DataCollectedEvent
 	{
 		public class ValueArray
diff --git a/source/ChromeDevTools/Protocol/Tracing/EndCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/Tracing/EndCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs
index 8221d6e..83be0ee 100644
--- a/source/ChromeDevTools/Protocol/Tracing/EndCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Stop trace events collection.
 	/// </summary>
 	[Command(ProtocolName.Tracing.End)]
+	[SupportedBy("Chrome")]
 	public class EndCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Tracing/EndCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Tracing/EndCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommandResponse.cs
index a46f9d6..ff23381 100644
--- a/source/ChromeDevTools/Protocol/Tracing/EndCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/EndCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Stop trace events collection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Tracing.End)]
+	[SupportedBy("Chrome")]
 	public class EndCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Tracing/GetCategoriesCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Tracing/GetCategoriesCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs
index 9358407..e1b65d8 100644
--- a/source/ChromeDevTools/Protocol/Tracing/GetCategoriesCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Gets supported tracing categories.
 	/// </summary>
 	[Command(ProtocolName.Tracing.GetCategories)]
+	[SupportedBy("Chrome")]
 	public class GetCategoriesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Tracing/GetCategoriesCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Tracing/GetCategoriesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommandResponse.cs
index 565ff4f..241e2dc 100644
--- a/source/ChromeDevTools/Protocol/Tracing/GetCategoriesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/GetCategoriesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Gets supported tracing categories.
 	/// </summary>
 	[CommandResponse(ProtocolName.Tracing.GetCategories)]
+	[SupportedBy("Chrome")]
 	public class GetCategoriesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Tracing/StartCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Tracing/StartCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
index 89c0119..25f092b 100644
--- a/source/ChromeDevTools/Protocol/Tracing/StartCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Start trace events collection.
 	/// </summary>
 	[Command(ProtocolName.Tracing.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Tracing/StartCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Tracing/StartCommandResponse.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommandResponse.cs
index d1126b7..7846f5d 100644
--- a/source/ChromeDevTools/Protocol/Tracing/StartCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/StartCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Start trace events collection.
 	/// </summary>
 	[CommandResponse(ProtocolName.Tracing.Start)]
+	[SupportedBy("Chrome")]
 	public class StartCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Tracing/TracingCompleteEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Tracing/TracingCompleteEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs
index 743f68a..c6a1237 100644
--- a/source/ChromeDevTools/Protocol/Tracing/TracingCompleteEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Tracing/TracingCompleteEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Tracing
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Tracing
 {
 	/// <summary>
 	/// Signals that tracing is stopped and there is no trace buffers pending flush, all data were delivered via dataCollected events.
 	/// </summary>
 	[Event(ProtocolName.Tracing.TracingComplete)]
+	[SupportedBy("Chrome")]
 	public class TracingCompleteEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Worker/ConnectToWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Worker/ConnectToWorkerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommand.cs
index 56daa23..751f512 100644
--- a/source/ChromeDevTools/Protocol/Worker/ConnectToWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
 {
 	[Command(ProtocolName.Worker.ConnectToWorker)]
+	[SupportedBy("Chrome")]
 	public class ConnectToWorkerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommandResponse.cs
new file mode 100644
index 0000000..d784cd9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/ConnectToWorkerCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[CommandResponse(ProtocolName.Worker.ConnectToWorker)]
+	[SupportedBy("Chrome")]
+	public class ConnectToWorkerCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommand.cs
new file mode 100644
index 0000000..9076336
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommand.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[Command(ProtocolName.Worker.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommandResponse.cs
new file mode 100644
index 0000000..3051bc5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/DisableCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[CommandResponse(ProtocolName.Worker.Disable)]
+	[SupportedBy("Chrome")]
+	public class DisableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/DisconnectFromWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Worker/DisconnectFromWorkerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommand.cs
index 3072b31..3f4f6a5 100644
--- a/source/ChromeDevTools/Protocol/Worker/DisconnectFromWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
 {
 	[Command(ProtocolName.Worker.DisconnectFromWorker)]
+	[SupportedBy("Chrome")]
 	public class DisconnectFromWorkerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommandResponse.cs
new file mode 100644
index 0000000..d4a104a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/DisconnectFromWorkerCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[CommandResponse(ProtocolName.Worker.DisconnectFromWorker)]
+	[SupportedBy("Chrome")]
+	public class DisconnectFromWorkerCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/DispatchMessageFromWorkerEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/DispatchMessageFromWorkerEvent.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Worker/DispatchMessageFromWorkerEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Worker/DispatchMessageFromWorkerEvent.cs
index 8383648..1a76c64 100644
--- a/source/ChromeDevTools/Protocol/Worker/DispatchMessageFromWorkerEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/DispatchMessageFromWorkerEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
 {
 	[Event(ProtocolName.Worker.DispatchMessageFromWorker)]
+	[SupportedBy("Chrome")]
 	public class DispatchMessageFromWorkerEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommand.cs
new file mode 100644
index 0000000..fe09423
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommand.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[Command(ProtocolName.Worker.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommandResponse.cs
new file mode 100644
index 0000000..0c6de34
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/EnableCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[CommandResponse(ProtocolName.Worker.Enable)]
+	[SupportedBy("Chrome")]
+	public class EnableCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/SendMessageToWorkerCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Worker/SendMessageToWorkerCommand.cs
rename to source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommand.cs
index 7a8f989..2907630 100644
--- a/source/ChromeDevTools/Protocol/Worker/SendMessageToWorkerCommand.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
 {
 	[Command(ProtocolName.Worker.SendMessageToWorker)]
+	[SupportedBy("Chrome")]
 	public class SendMessageToWorkerCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommandResponse.cs
new file mode 100644
index 0000000..aa5a44d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/SendMessageToWorkerCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[CommandResponse(ProtocolName.Worker.SendMessageToWorker)]
+	[SupportedBy("Chrome")]
+	public class SendMessageToWorkerCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommand.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommand.cs
new file mode 100644
index 0000000..9a0014c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[Command(ProtocolName.Worker.SetAutoconnectToWorkers)]
+	[SupportedBy("Chrome")]
+	public class SetAutoconnectToWorkersCommand
+	{
+		/// <summary>
+		/// Gets or sets Value
+		/// </summary>
+		public bool Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommandResponse.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommandResponse.cs
new file mode 100644
index 0000000..35f9dcd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/SetAutoconnectToWorkersCommandResponse.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
+{
+	[CommandResponse(ProtocolName.Worker.SetAutoconnectToWorkers)]
+	[SupportedBy("Chrome")]
+	public class SetAutoconnectToWorkersCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/WorkerCreatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerCreatedEvent.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Worker/WorkerCreatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Worker/WorkerCreatedEvent.cs
index f42e09d..c868117 100644
--- a/source/ChromeDevTools/Protocol/Worker/WorkerCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerCreatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
 {
 	[Event(ProtocolName.Worker.WorkerCreated)]
+	[SupportedBy("Chrome")]
 	public class WorkerCreatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Worker/WorkerTerminatedEvent.cs b/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerTerminatedEvent.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/Worker/WorkerTerminatedEvent.cs
rename to source/ChromeDevTools/Protocol/Chrome/Worker/WorkerTerminatedEvent.cs
index a381edd..7f688c0 100644
--- a/source/ChromeDevTools/Protocol/Worker/WorkerTerminatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/Chrome/Worker/WorkerTerminatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.Chrome.Worker
 {
 	[Event(ProtocolName.Worker.WorkerTerminated)]
+	[SupportedBy("Chrome")]
 	public class WorkerTerminatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCache.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCache.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCache.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCache.cs
index f1e6657..ae4457a 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCache.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCache.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Detailed application cache information.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class ApplicationCache
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCacheResource.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCacheResource.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCacheResource.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCacheResource.cs
index 51a3323..175ce18 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCacheResource.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCacheResource.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Detailed application cache resource information.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class ApplicationCacheResource
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
index 07f38e5..ed193a1 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/ApplicationCacheStatusUpdatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	[Event(ProtocolName.ApplicationCache.ApplicationCacheStatusUpdated)]
+	[SupportedBy("iOS")]
 	public class ApplicationCacheStatusUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/ApplicationCache/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs
index 5b8c851..6be51f5 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Enables application cache domain notifications.
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/ApplicationCache/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommandResponse.cs
index 48fe1eb..a0147c6 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Enables application cache domain notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.ApplicationCache.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/FrameWithManifest.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/FrameWithManifest.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/ApplicationCache/FrameWithManifest.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/FrameWithManifest.cs
index 2c69400..854436b 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/FrameWithManifest.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/FrameWithManifest.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Frame identifier - manifest URL pair.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class FrameWithManifest
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/GetApplicationCacheForFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/ApplicationCache/GetApplicationCacheForFrameCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs
index 642f934..02aefa1 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/GetApplicationCacheForFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Returns relevant application cache data for the document in given frame.
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetApplicationCacheForFrame)]
+	[SupportedBy("iOS")]
 	public class GetApplicationCacheForFrameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
index dbcc34c..4354557 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetApplicationCacheForFrameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Returns relevant application cache data for the document in given frame.
 	/// </summary>
 	[CommandResponse(ProtocolName.ApplicationCache.GetApplicationCacheForFrame)]
+	[SupportedBy("iOS")]
 	public class GetApplicationCacheForFrameCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/GetFramesWithManifestsCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/ApplicationCache/GetFramesWithManifestsCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs
index d6cdb2e..b353e15 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/GetFramesWithManifestsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache.
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetFramesWithManifests)]
+	[SupportedBy("iOS")]
 	public class GetFramesWithManifestsCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/GetFramesWithManifestsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
index 49642e9..7029b3a 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetFramesWithManifestsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache.
 	/// </summary>
 	[CommandResponse(ProtocolName.ApplicationCache.GetFramesWithManifests)]
+	[SupportedBy("iOS")]
 	public class GetFramesWithManifestsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/GetManifestForFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/ApplicationCache/GetManifestForFrameCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs
index b89e610..b614930 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/GetManifestForFrameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Returns manifest URL for document in the given frame.
 	/// </summary>
 	[Command(ProtocolName.ApplicationCache.GetManifestForFrame)]
+	[SupportedBy("iOS")]
 	public class GetManifestForFrameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/GetManifestForFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/ApplicationCache/GetManifestForFrameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommandResponse.cs
index f64946e..2d0a85f 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/GetManifestForFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/GetManifestForFrameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	/// <summary>
 	/// Returns manifest URL for document in the given frame.
 	/// </summary>
 	[CommandResponse(ProtocolName.ApplicationCache.GetManifestForFrame)]
+	[SupportedBy("iOS")]
 	public class GetManifestForFrameCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/ApplicationCache/NetworkStateUpdatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/NetworkStateUpdatedEvent.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/ApplicationCache/NetworkStateUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/ApplicationCache/NetworkStateUpdatedEvent.cs
index a709308..1c77716 100644
--- a/source/ChromeDevTools/Protocol/ApplicationCache/NetworkStateUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/ApplicationCache/NetworkStateUpdatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.ApplicationCache
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.ApplicationCache
 {
 	[Event(ProtocolName.ApplicationCache.NetworkStateUpdated)]
+	[SupportedBy("iOS")]
 	public class NetworkStateUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs
new file mode 100644
index 0000000..c53bd83
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Creates a new empty rule with the given <code>selector</code> in a stylesheet with given <code>styleSheetId</code>.
+	/// </summary>
+	[Command(ProtocolName.CSS.AddRule)]
+	[SupportedBy("iOS")]
+	public class AddRuleCommand
+	{
+		/// <summary>
+		/// Gets or sets StyleSheetId
+		/// </summary>
+		public string StyleSheetId { get; set; }
+		/// <summary>
+		/// Gets or sets Selector
+		/// </summary>
+		public string Selector { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommandResponse.cs
new file mode 100644
index 0000000..d302d0f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/AddRuleCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Creates a new empty rule with the given <code>selector</code> in a stylesheet with given <code>styleSheetId</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.AddRule)]
+	[SupportedBy("iOS")]
+	public class AddRuleCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets The newly created rule.
+		/// </summary>
+		public CSSRule Rule { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/CSSComputedStyleProperty.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSComputedStyleProperty.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/CSSComputedStyleProperty.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/CSSComputedStyleProperty.cs
index 230fff3..ea54958 100644
--- a/source/ChromeDevTools/Protocol/CSS/CSSComputedStyleProperty.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSComputedStyleProperty.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class CSSComputedStyleProperty
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSMedia.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSMedia.cs
new file mode 100644
index 0000000..576fdc1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSMedia.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS media query descriptor.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSMedia
+	{
+		/// <summary>
+		/// Gets or sets Media query text.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets Source of the media query: "mediaRule" if specified by a @media rule, "importRule" if specified by an @import rule, "linkedSheet" if specified by a "media" attribute in a linked stylesheet's LINK tag, "inlineSheet" if specified by a "media" attribute in an inline stylesheet's STYLE tag.
+		/// </summary>
+		public string Source { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the document containing the media query description.
+		/// </summary>
+		public string SourceURL { get; set; }
+		/// <summary>
+		/// Gets or sets Line in the document containing the media query (not defined for the "stylesheet" source).
+		/// </summary>
+		public long SourceLine { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSProperty.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSProperty.cs
new file mode 100644
index 0000000..a8568c5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSProperty.cs
@@ -0,0 +1,46 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS style effective visual dimensions and source offsets.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSProperty
+	{
+		/// <summary>
+		/// Gets or sets The property name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets The property value.
+		/// </summary>
+		public string Value { get; set; }
+		/// <summary>
+		/// Gets or sets The property priority (implies "" if absent).
+		/// </summary>
+		public string Priority { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the property is implicit (implies <code>false</code> if absent).
+		/// </summary>
+		public bool Implicit { get; set; }
+		/// <summary>
+		/// Gets or sets The full property text as specified in the style.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the property is understood by the browser (implies <code>true</code> if absent).
+		/// </summary>
+		public bool ParsedOk { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the property is active or disabled.
+		/// </summary>
+		public CSSPropertyStatus Status { get; set; }
+		/// <summary>
+		/// Gets or sets The entire property range in the enclosing style declaration (if available).
+		/// </summary>
+		public SourceRange Range { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyInfo.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyInfo.cs
new file mode 100644
index 0000000..e8ca9de
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyInfo.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSPropertyInfo
+	{
+		/// <summary>
+		/// Gets or sets Property name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Longhand property names.
+		/// </summary>
+		public string[] Longhands { get; set; }
+		/// <summary>
+		/// Gets or sets Supported values for this property.
+		/// </summary>
+		public string[] Values { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyStatus.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyStatus.cs
new file mode 100644
index 0000000..399be80
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSPropertyStatus.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS{
+	/// <summary>
+	/// The property status: "active" if the property is effective in the style, "inactive" if the property is overridden by a same-named property in this style later on, "disabled" if the property is disabled by the user, "style" (implied if absent) if the property is reported by the browser rather than by the CSS source parser.
+	/// </summary>
+	public enum CSSPropertyStatus
+	{
+			Active,
+			Inactive,
+			Disabled,
+			Style,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSRule.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSRule.cs
new file mode 100644
index 0000000..57a31e6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSRule.cs
@@ -0,0 +1,42 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS rule representation.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSRule
+	{
+		/// <summary>
+		/// Gets or sets The CSS rule identifier (absent for user agent stylesheet and user-specified stylesheet rules).
+		/// </summary>
+		public CSSRuleId RuleId { get; set; }
+		/// <summary>
+		/// Gets or sets Rule selector data.
+		/// </summary>
+		public SelectorList SelectorList { get; set; }
+		/// <summary>
+		/// Gets or sets Parent stylesheet resource URL (for regular rules).
+		/// </summary>
+		public string SourceURL { get; set; }
+		/// <summary>
+		/// Gets or sets Line ordinal of the rule selector start character in the resource.
+		/// </summary>
+		public long SourceLine { get; set; }
+		/// <summary>
+		/// Gets or sets Parent stylesheet's origin.
+		/// </summary>
+		public StyleSheetOrigin Origin { get; set; }
+		/// <summary>
+		/// Gets or sets Associated style declaration.
+		/// </summary>
+		public CSSStyle Style { get; set; }
+		/// <summary>
+		/// Gets or sets Media list array (for rules involving media queries). The array enumerates media queries starting with the innermost one, going outwards.
+		/// </summary>
+		public CSSMedia[] Media { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSRuleId.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSRuleId.cs
new file mode 100644
index 0000000..a5647ff
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSRuleId.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// This object identifies a CSS rule in a unique way.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSRuleId
+	{
+		/// <summary>
+		/// Gets or sets Enclosing stylesheet identifier.
+		/// </summary>
+		public string StyleSheetId { get; set; }
+		/// <summary>
+		/// Gets or sets The rule ordinal within the stylesheet.
+		/// </summary>
+		public long Ordinal { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSSelector.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSSelector.cs
new file mode 100644
index 0000000..0c08b7a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSSelector.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS selector.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSSelector
+	{
+		/// <summary>
+		/// Gets or sets Canonicalized selector text.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets Specificity (a, b, c) tuple. Included if the selector is sent in response to CSS.getMatchedStylesForNode which provides a context element.
+		/// </summary>
+		public long[] Specificity { get; set; }
+		/// <summary>
+		/// Gets or sets Whether or not the specificity can be dynamic. Included if the selector is sent in response to CSS.getMatchedStylesForNode which provides a context element.
+		/// </summary>
+		public bool Dynamic { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyle.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyle.cs
new file mode 100644
index 0000000..d98a952
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyle.cs
@@ -0,0 +1,42 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS style representation.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSStyle
+	{
+		/// <summary>
+		/// Gets or sets The CSS style identifier (absent for attribute styles).
+		/// </summary>
+		public CSSStyleId StyleId { get; set; }
+		/// <summary>
+		/// Gets or sets CSS properties in the style.
+		/// </summary>
+		public CSSProperty[] CssProperties { get; set; }
+		/// <summary>
+		/// Gets or sets Computed values for all shorthands found in the style.
+		/// </summary>
+		public ShorthandEntry[] ShorthandEntries { get; set; }
+		/// <summary>
+		/// Gets or sets Style declaration text (if available).
+		/// </summary>
+		public string CssText { get; set; }
+		/// <summary>
+		/// Gets or sets Style declaration range in the enclosing stylesheet (if available).
+		/// </summary>
+		public SourceRange Range { get; set; }
+		/// <summary>
+		/// Gets or sets The effective "width" property value from this style.
+		/// </summary>
+		public string Width { get; set; }
+		/// <summary>
+		/// Gets or sets The effective "height" property value from this style.
+		/// </summary>
+		public string Height { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleAttribute.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleAttribute.cs
new file mode 100644
index 0000000..00a1af1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleAttribute.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS style information for a DOM style attribute.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSStyleAttribute
+	{
+		/// <summary>
+		/// Gets or sets DOM attribute name (e.g. "width").
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets CSS style generated by the respective DOM attribute.
+		/// </summary>
+		public CSSStyle Style { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleId.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleId.cs
new file mode 100644
index 0000000..e04d430
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleId.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// This object identifies a CSS style in a unique way.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSStyleId
+	{
+		/// <summary>
+		/// Gets or sets Enclosing stylesheet identifier.
+		/// </summary>
+		public string StyleSheetId { get; set; }
+		/// <summary>
+		/// Gets or sets The style ordinal within the stylesheet.
+		/// </summary>
+		public long Ordinal { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetBody.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetBody.cs
new file mode 100644
index 0000000..2854406
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetBody.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS stylesheet contents.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSStyleSheetBody
+	{
+		/// <summary>
+		/// Gets or sets The stylesheet identifier.
+		/// </summary>
+		public string StyleSheetId { get; set; }
+		/// <summary>
+		/// Gets or sets Stylesheet resource URL.
+		/// </summary>
+		public CSSRule[] Rules { get; set; }
+		/// <summary>
+		/// Gets or sets Stylesheet resource contents (if available).
+		/// </summary>
+		public string Text { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetHeader.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetHeader.cs
new file mode 100644
index 0000000..143ef1a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CSSStyleSheetHeader.cs
@@ -0,0 +1,50 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS stylesheet metainformation.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSSStyleSheetHeader
+	{
+		/// <summary>
+		/// Gets or sets The stylesheet identifier.
+		/// </summary>
+		public string StyleSheetId { get; set; }
+		/// <summary>
+		/// Gets or sets Owner frame identifier.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Stylesheet resource URL.
+		/// </summary>
+		public string SourceURL { get; set; }
+		/// <summary>
+		/// Gets or sets Stylesheet origin.
+		/// </summary>
+		public StyleSheetOrigin Origin { get; set; }
+		/// <summary>
+		/// Gets or sets Stylesheet title.
+		/// </summary>
+		public string Title { get; set; }
+		/// <summary>
+		/// Gets or sets Denotes whether the stylesheet is disabled.
+		/// </summary>
+		public bool Disabled { get; set; }
+		/// <summary>
+		/// Gets or sets Whether this stylesheet is a <style> tag created by the parser. This is not set for document.written <style> tags.
+		/// </summary>
+		public bool IsInline { get; set; }
+		/// <summary>
+		/// Gets or sets Line offset of the stylesheet within the resource (zero based).
+		/// </summary>
+		public double StartLine { get; set; }
+		/// <summary>
+		/// Gets or sets Column offset of the stylesheet within the resource (zero based).
+		/// </summary>
+		public double StartColumn { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs
new file mode 100644
index 0000000..89422ed
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Creates a new special "inspector" stylesheet in the frame with given <code>frameId</code>.
+	/// </summary>
+	[Command(ProtocolName.CSS.CreateStyleSheet)]
+	[SupportedBy("iOS")]
+	public class CreateStyleSheetCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the frame where the new "inspector" stylesheet should be created.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommandResponse.cs
new file mode 100644
index 0000000..e08594f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/CreateStyleSheetCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Creates a new special "inspector" stylesheet in the frame with given <code>frameId</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.CreateStyleSheet)]
+	[SupportedBy("iOS")]
+	public class CreateStyleSheetCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the created "inspector" stylesheet.
+		/// </summary>
+		public string StyleSheetId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/CSS/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs
index 1915e55..1df505f 100644
--- a/source/ChromeDevTools/Protocol/CSS/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Disables the CSS agent for the given page.
 	/// </summary>
 	[Command(ProtocolName.CSS.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/CSS/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/CSS/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/DisableCommandResponse.cs
index 8d00df6..b637d72 100644
--- a/source/ChromeDevTools/Protocol/CSS/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Disables the CSS agent for the given page.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/CSS/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs
index e852b73..3ff0295 100644
--- a/source/ChromeDevTools/Protocol/CSS/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received.
 	/// </summary>
 	[Command(ProtocolName.CSS.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/CSS/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/CSS/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/EnableCommandResponse.cs
index 018e5d6..e714935 100644
--- a/source/ChromeDevTools/Protocol/CSS/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/CSS/ForcePseudoStateCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/CSS/ForcePseudoStateCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs
index 6bf780d..c2aaf5d 100644
--- a/source/ChromeDevTools/Protocol/CSS/ForcePseudoStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser.
 	/// </summary>
 	[Command(ProtocolName.CSS.ForcePseudoState)]
+	[SupportedBy("iOS")]
 	public class ForcePseudoStateCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/ForcePseudoStateCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/ForcePseudoStateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommandResponse.cs
index 375ff61..9006b32 100644
--- a/source/ChromeDevTools/Protocol/CSS/ForcePseudoStateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/ForcePseudoStateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.ForcePseudoState)]
+	[SupportedBy("iOS")]
 	public class ForcePseudoStateCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs
new file mode 100644
index 0000000..3b790da
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns metainfo entries for all known stylesheets.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetAllStyleSheets)]
+	[SupportedBy("iOS")]
+	public class GetAllStyleSheetsCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommandResponse.cs
new file mode 100644
index 0000000..8db852e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetAllStyleSheetsCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns metainfo entries for all known stylesheets.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetAllStyleSheets)]
+	[SupportedBy("iOS")]
+	public class GetAllStyleSheetsCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Descriptor entries for all available stylesheets.
+		/// </summary>
+		public CSSStyleSheetHeader[] Headers { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/GetComputedStyleForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/GetComputedStyleForNodeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs
index dab3d4d..cd29339 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetComputedStyleForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns the computed style for a DOM node identified by <code>nodeId</code>.
 	/// </summary>
 	[Command(ProtocolName.CSS.GetComputedStyleForNode)]
+	[SupportedBy("iOS")]
 	public class GetComputedStyleForNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/GetComputedStyleForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/CSS/GetComputedStyleForNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommandResponse.cs
index 626946f..59267f3 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetComputedStyleForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetComputedStyleForNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns the computed style for a DOM node identified by <code>nodeId</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.GetComputedStyleForNode)]
+	[SupportedBy("iOS")]
 	public class GetComputedStyleForNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/GetInlineStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/CSS/GetInlineStylesForNodeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs
index c4729df..ac19b72 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetInlineStylesForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns the styles defined inline (explicitly in the "style" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>.
 	/// </summary>
 	[Command(ProtocolName.CSS.GetInlineStylesForNode)]
+	[SupportedBy("iOS")]
 	public class GetInlineStylesForNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/GetInlineStylesForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommandResponse.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/CSS/GetInlineStylesForNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommandResponse.cs
index 8146f6c..bf4e791 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetInlineStylesForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetInlineStylesForNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns the styles defined inline (explicitly in the "style" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.GetInlineStylesForNode)]
+	[SupportedBy("iOS")]
 	public class GetInlineStylesForNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs
new file mode 100644
index 0000000..262dc8e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns requested styles for a DOM node identified by <code>nodeId</code>.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetMatchedStylesForNode)]
+	[SupportedBy("iOS")]
+	public class GetMatchedStylesForNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets NodeId
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Whether to include pseudo styles (default: true).
+		/// </summary>
+		public bool IncludePseudo { get; set; }
+		/// <summary>
+		/// Gets or sets Whether to include inherited styles (default: true).
+		/// </summary>
+		public bool IncludeInherited { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/GetMatchedStylesForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommandResponse.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/CSS/GetMatchedStylesForNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommandResponse.cs
index 7ca479e..d5fb72b 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetMatchedStylesForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetMatchedStylesForNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns requested styles for a DOM node identified by <code>nodeId</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.GetMatchedStylesForNode)]
+	[SupportedBy("iOS")]
 	public class GetMatchedStylesForNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs
new file mode 100644
index 0000000..0eeb004
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns the Named Flows from the document.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetNamedFlowCollection)]
+	[SupportedBy("iOS")]
+	public class GetNamedFlowCollectionCommand
+	{
+		/// <summary>
+		/// Gets or sets The document node id for which to get the Named Flow Collection.
+		/// </summary>
+		public long DocumentNodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommandResponse.cs
new file mode 100644
index 0000000..8b01af7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetNamedFlowCollectionCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns the Named Flows from the document.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetNamedFlowCollection)]
+	[SupportedBy("iOS")]
+	public class GetNamedFlowCollectionCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets An array containing the Named Flows in the document.
+		/// </summary>
+		public NamedFlow[] NamedFlows { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs
new file mode 100644
index 0000000..6b251d1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns stylesheet data for the specified <code>styleSheetId</code>.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetStyleSheet)]
+	[SupportedBy("iOS")]
+	public class GetStyleSheetCommand
+	{
+		/// <summary>
+		/// Gets or sets StyleSheetId
+		/// </summary>
+		public string StyleSheetId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommandResponse.cs
new file mode 100644
index 0000000..f043151
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns stylesheet data for the specified <code>styleSheetId</code>.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetStyleSheet)]
+	[SupportedBy("iOS")]
+	public class GetStyleSheetCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Stylesheet contents for the specified <code>styleSheetId</code>.
+		/// </summary>
+		public CSSStyleSheetBody StyleSheet { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/GetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/GetStyleSheetTextCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs
index a8a610c..5b682e8 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetStyleSheetTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns the current textual content and the URL for a stylesheet.
 	/// </summary>
 	[Command(ProtocolName.CSS.GetStyleSheetText)]
+	[SupportedBy("iOS")]
 	public class GetStyleSheetTextCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/GetStyleSheetTextCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/GetStyleSheetTextCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommandResponse.cs
index 27ba7e9..37d8695 100644
--- a/source/ChromeDevTools/Protocol/CSS/GetStyleSheetTextCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetStyleSheetTextCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Returns the current textual content and the URL for a stylesheet.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.GetStyleSheetText)]
+	[SupportedBy("iOS")]
 	public class GetStyleSheetTextCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs
new file mode 100644
index 0000000..c4222c7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns all supported CSS property names.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetSupportedCSSProperties)]
+	[SupportedBy("iOS")]
+	public class GetSupportedCSSPropertiesCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommandResponse.cs
new file mode 100644
index 0000000..705e90b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedCSSPropertiesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns all supported CSS property names.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetSupportedCSSProperties)]
+	[SupportedBy("iOS")]
+	public class GetSupportedCSSPropertiesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Supported property metainfo.
+		/// </summary>
+		public CSSPropertyInfo[] CssProperties { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs
new file mode 100644
index 0000000..2815739
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns all supported system font family names.
+	/// </summary>
+	[Command(ProtocolName.CSS.GetSupportedSystemFontFamilyNames)]
+	[SupportedBy("iOS")]
+	public class GetSupportedSystemFontFamilyNamesCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommandResponse.cs
new file mode 100644
index 0000000..124c502
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/GetSupportedSystemFontFamilyNamesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Returns all supported system font family names.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.GetSupportedSystemFontFamilyNames)]
+	[SupportedBy("iOS")]
+	public class GetSupportedSystemFontFamilyNamesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Supported system font families.
+		/// </summary>
+		public string[] FontFamilyNames { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/InheritedStyleEntry.cs b/source/ChromeDevTools/Protocol/iOS/CSS/InheritedStyleEntry.cs
new file mode 100644
index 0000000..1b70ec9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/InheritedStyleEntry.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS rule collection for a single pseudo style.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class InheritedStyleEntry
+	{
+		/// <summary>
+		/// Gets or sets The ancestor node's inline style, if any, in the style inheritance chain.
+		/// </summary>
+		public CSSStyle InlineStyle { get; set; }
+		/// <summary>
+		/// Gets or sets Matches of CSS rules matching the ancestor node in the style inheritance chain.
+		/// </summary>
+		public RuleMatch[] MatchedCSSRules { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/MediaQueryResultChangedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/MediaQueryResultChangedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/MediaQueryResultChangedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/MediaQueryResultChangedEvent.cs
index 9d6b663..50ab2fa 100644
--- a/source/ChromeDevTools/Protocol/CSS/MediaQueryResultChangedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/MediaQueryResultChangedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Fires whenever a MediaQuery result changes (for example, after a browser window has been resized.) The current implementation considers only viewport-dependent media features.
 	/// </summary>
 	[Event(ProtocolName.CSS.MediaQueryResultChanged)]
+	[SupportedBy("iOS")]
 	public class MediaQueryResultChangedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlow.cs b/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlow.cs
new file mode 100644
index 0000000..0e735a8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlow.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// This object represents a Named Flow.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class NamedFlow
+	{
+		/// <summary>
+		/// Gets or sets The document node id.
+		/// </summary>
+		public long DocumentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Named Flow identifier.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets The "overset" attribute of a Named Flow.
+		/// </summary>
+		public bool Overset { get; set; }
+		/// <summary>
+		/// Gets or sets An array of nodes that flow into the Named Flow.
+		/// </summary>
+		public long[] Content { get; set; }
+		/// <summary>
+		/// Gets or sets An array of regions associated with the Named Flow.
+		/// </summary>
+		public Region[] Regions { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowCreatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowCreatedEvent.cs
new file mode 100644
index 0000000..e0a6795
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowCreatedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Fires when a Named Flow is created.
+	/// </summary>
+	[Event(ProtocolName.CSS.NamedFlowCreated)]
+	[SupportedBy("iOS")]
+	public class NamedFlowCreatedEvent
+	{
+		/// <summary>
+		/// Gets or sets The new Named Flow.
+		/// </summary>
+		public NamedFlow NamedFlow { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowRemovedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowRemovedEvent.cs
new file mode 100644
index 0000000..48f37fe
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/NamedFlowRemovedEvent.cs
@@ -0,0 +1,21 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Fires when a Named Flow is removed: has no associated content nodes and regions.
+	/// </summary>
+	[Event(ProtocolName.CSS.NamedFlowRemoved)]
+	[SupportedBy("iOS")]
+	public class NamedFlowRemovedEvent
+	{
+		/// <summary>
+		/// Gets or sets The document node id.
+		/// </summary>
+		public long DocumentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Identifier of the removed Named Flow.
+		/// </summary>
+		public string FlowName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/PseudoIdMatches.cs b/source/ChromeDevTools/Protocol/iOS/CSS/PseudoIdMatches.cs
new file mode 100644
index 0000000..bb9067e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/PseudoIdMatches.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// CSS rule collection for a single pseudo style.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class PseudoIdMatches
+	{
+		/// <summary>
+		/// Gets or sets Pseudo style identifier (see <code>enum PseudoId</code> in <code>RenderStyleConstants.h</code>).
+		/// </summary>
+		public long PseudoId { get; set; }
+		/// <summary>
+		/// Gets or sets Matches of CSS rules applicable to the pseudo style.
+		/// </summary>
+		public RuleMatch[] Matches { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/Region.cs b/source/ChromeDevTools/Protocol/iOS/CSS/Region.cs
new file mode 100644
index 0000000..f9c4098
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/Region.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// This object represents a region that flows from a Named Flow.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Region
+	{
+		/// <summary>
+		/// Gets or sets The "overset" attribute of a Named Flow.
+		/// </summary>
+		public string RegionOverset { get; set; }
+		/// <summary>
+		/// Gets or sets The corresponding DOM node id.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/RegionOversetChangedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/RegionOversetChangedEvent.cs
new file mode 100644
index 0000000..11190fc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/RegionOversetChangedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Fires if any of the regionOverset values changed in a Named Flow's region chain.
+	/// </summary>
+	[Event(ProtocolName.CSS.RegionOversetChanged)]
+	[SupportedBy("iOS")]
+	public class RegionOversetChangedEvent
+	{
+		/// <summary>
+		/// Gets or sets The Named Flow containing the regions whose regionOverset values changed.
+		/// </summary>
+		public NamedFlow NamedFlow { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/RegisteredNamedFlowContentElementEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/RegisteredNamedFlowContentElementEvent.cs
new file mode 100644
index 0000000..65a956d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/RegisteredNamedFlowContentElementEvent.cs
@@ -0,0 +1,29 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Fires when a Named Flow's has been registered with a new content node.
+	/// </summary>
+	[Event(ProtocolName.CSS.RegisteredNamedFlowContentElement)]
+	[SupportedBy("iOS")]
+	public class RegisteredNamedFlowContentElementEvent
+	{
+		/// <summary>
+		/// Gets or sets The document node id.
+		/// </summary>
+		public long DocumentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Named Flow identifier for which the new content element was registered.
+		/// </summary>
+		public string FlowName { get; set; }
+		/// <summary>
+		/// Gets or sets The node id of the registered content node.
+		/// </summary>
+		public long ContentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets The node id of the element following the registered content node.
+		/// </summary>
+		public long NextContentNodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/RuleMatch.cs b/source/ChromeDevTools/Protocol/iOS/CSS/RuleMatch.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/CSS/RuleMatch.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/RuleMatch.cs
index 0b0aa8e..73b404e 100644
--- a/source/ChromeDevTools/Protocol/CSS/RuleMatch.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/RuleMatch.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Match data for a CSS rule.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class RuleMatch
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SelectorList.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SelectorList.cs
new file mode 100644
index 0000000..eb582c4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SelectorList.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Selector list data.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class SelectorList
+	{
+		/// <summary>
+		/// Gets or sets Selectors in the list.
+		/// </summary>
+		public CSSSelector[] Selectors { get; set; }
+		/// <summary>
+		/// Gets or sets Rule selector text.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets Rule selector range in the underlying resource (if available).
+		/// </summary>
+		public SourceRange Range { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs
new file mode 100644
index 0000000..daea511
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Modifies the rule selector.
+	/// </summary>
+	[Command(ProtocolName.CSS.SetRuleSelector)]
+	[SupportedBy("iOS")]
+	public class SetRuleSelectorCommand
+	{
+		/// <summary>
+		/// Gets or sets RuleId
+		/// </summary>
+		public CSSRuleId RuleId { get; set; }
+		/// <summary>
+		/// Gets or sets Selector
+		/// </summary>
+		public string Selector { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/SetRuleSelectorCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/CSS/SetRuleSelectorCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommandResponse.cs
index e0ed825..0eab994 100644
--- a/source/ChromeDevTools/Protocol/CSS/SetRuleSelectorCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetRuleSelectorCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Modifies the rule selector.
 	/// </summary>
 	[CommandResponse(ProtocolName.CSS.SetRuleSelector)]
+	[SupportedBy("iOS")]
 	public class SetRuleSelectorCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs
new file mode 100644
index 0000000..0427a9d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Sets the new stylesheet text, thereby invalidating all existing <code>CSSStyleId</code>'s and <code>CSSRuleId</code>'s contained by this stylesheet.
+	/// </summary>
+	[Command(ProtocolName.CSS.SetStyleSheetText)]
+	[SupportedBy("iOS")]
+	public class SetStyleSheetTextCommand
+	{
+		/// <summary>
+		/// Gets or sets StyleSheetId
+		/// </summary>
+		public string StyleSheetId { get; set; }
+		/// <summary>
+		/// Gets or sets Text
+		/// </summary>
+		public string Text { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommandResponse.cs
new file mode 100644
index 0000000..210ce74
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleSheetTextCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Sets the new stylesheet text, thereby invalidating all existing <code>CSSStyleId</code>'s and <code>CSSRuleId</code>'s contained by this stylesheet.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.SetStyleSheetText)]
+	[SupportedBy("iOS")]
+	public class SetStyleSheetTextCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs
new file mode 100644
index 0000000..9845893
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Sets the new <code>text</code> for the respective style.
+	/// </summary>
+	[Command(ProtocolName.CSS.SetStyleText)]
+	[SupportedBy("iOS")]
+	public class SetStyleTextCommand
+	{
+		/// <summary>
+		/// Gets or sets StyleId
+		/// </summary>
+		public CSSStyleId StyleId { get; set; }
+		/// <summary>
+		/// Gets or sets Text
+		/// </summary>
+		public string Text { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommandResponse.cs
new file mode 100644
index 0000000..7caea7a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SetStyleTextCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Sets the new <code>text</code> for the respective style.
+	/// </summary>
+	[CommandResponse(ProtocolName.CSS.SetStyleText)]
+	[SupportedBy("iOS")]
+	public class SetStyleTextCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets The resulting style after the text modification.
+		/// </summary>
+		public CSSStyle Style { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/ShorthandEntry.cs b/source/ChromeDevTools/Protocol/iOS/CSS/ShorthandEntry.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/CSS/ShorthandEntry.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/ShorthandEntry.cs
index c78f8cf..a5e3573 100644
--- a/source/ChromeDevTools/Protocol/CSS/ShorthandEntry.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/ShorthandEntry.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// 
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class ShorthandEntry
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/SourceRange.cs b/source/ChromeDevTools/Protocol/iOS/CSS/SourceRange.cs
new file mode 100644
index 0000000..59d71c6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/SourceRange.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Text range within a resource.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class SourceRange
+	{
+		/// <summary>
+		/// Gets or sets Start line of range.
+		/// </summary>
+		public long StartLine { get; set; }
+		/// <summary>
+		/// Gets or sets Start column of range (inclusive).
+		/// </summary>
+		public long StartColumn { get; set; }
+		/// <summary>
+		/// Gets or sets End line of range
+		/// </summary>
+		public long EndLine { get; set; }
+		/// <summary>
+		/// Gets or sets End column of range (exclusive).
+		/// </summary>
+		public long EndColumn { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/StyleSheetAddedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetAddedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/StyleSheetAddedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetAddedEvent.cs
index 0dda38a..a3c9e0b 100644
--- a/source/ChromeDevTools/Protocol/CSS/StyleSheetAddedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetAddedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Fired whenever an active document stylesheet is added.
 	/// </summary>
 	[Event(ProtocolName.CSS.StyleSheetAdded)]
+	[SupportedBy("iOS")]
 	public class StyleSheetAddedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/CSS/StyleSheetChangedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetChangedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/StyleSheetChangedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetChangedEvent.cs
index c58f9cf..5d56d31 100644
--- a/source/ChromeDevTools/Protocol/CSS/StyleSheetChangedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetChangedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Fired whenever a stylesheet is changed as a result of the client operation.
 	/// </summary>
 	[Event(ProtocolName.CSS.StyleSheetChanged)]
+	[SupportedBy("iOS")]
 	public class StyleSheetChangedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetOrigin.cs b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetOrigin.cs
new file mode 100644
index 0000000..8173e05
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetOrigin.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS{
+	/// <summary>
+	/// Stylesheet type: "user" for user stylesheets, "user-agent" for user-agent stylesheets, "inspector" for stylesheets created by the inspector (i.e. those holding the "via inspector" rules), "regular" for regular stylesheets.
+	/// </summary>
+	public enum StyleSheetOrigin
+	{
+			User,
+			User_agent,
+			Inspector,
+			Regular,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/CSS/StyleSheetRemovedEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetRemovedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/CSS/StyleSheetRemovedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetRemovedEvent.cs
index 4730327..720e699 100644
--- a/source/ChromeDevTools/Protocol/CSS/StyleSheetRemovedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/StyleSheetRemovedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.CSS
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
 {
 	/// <summary>
 	/// Fired whenever an active document stylesheet is removed.
 	/// </summary>
 	[Event(ProtocolName.CSS.StyleSheetRemoved)]
+	[SupportedBy("iOS")]
 	public class StyleSheetRemovedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/CSS/UnregisteredNamedFlowContentElementEvent.cs b/source/ChromeDevTools/Protocol/iOS/CSS/UnregisteredNamedFlowContentElementEvent.cs
new file mode 100644
index 0000000..19d407c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/CSS/UnregisteredNamedFlowContentElementEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.CSS
+{
+	/// <summary>
+	/// Fires when a Named Flow's has been registered with a new content node.
+	/// </summary>
+	[Event(ProtocolName.CSS.UnregisteredNamedFlowContentElement)]
+	[SupportedBy("iOS")]
+	public class UnregisteredNamedFlowContentElementEvent
+	{
+		/// <summary>
+		/// Gets or sets The document node id.
+		/// </summary>
+		public long DocumentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Named Flow identifier for which the new content element was unregistered.
+		/// </summary>
+		public string FlowName { get; set; }
+		/// <summary>
+		/// Gets or sets The node id of the unregistered content node.
+		/// </summary>
+		public long ContentNodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs
new file mode 100644
index 0000000..1570a9b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Enables console to refer to the node with given id via $0 (see Command Line API for more details).
+	/// </summary>
+	[Command(ProtocolName.Console.AddInspectedNode)]
+	[SupportedBy("iOS")]
+	public class AddInspectedNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets DOM node id to be accessible by means of $0 command line API.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommandResponse.cs
new file mode 100644
index 0000000..c64cbe1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/AddInspectedNodeCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Enables console to refer to the node with given id via $0 (see Command Line API for more details).
+	/// </summary>
+	[CommandResponse(ProtocolName.Console.AddInspectedNode)]
+	[SupportedBy("iOS")]
+	public class AddInspectedNodeCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/CallFrame.cs b/source/ChromeDevTools/Protocol/iOS/Console/CallFrame.cs
new file mode 100644
index 0000000..7c99953
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/CallFrame.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Stack entry for console errors and assertions.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CallFrame
+	{
+		/// <summary>
+		/// Gets or sets JavaScript function name.
+		/// </summary>
+		public string FunctionName { get; set; }
+		/// <summary>
+		/// Gets or sets JavaScript script name or url.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets JavaScript script line number.
+		/// </summary>
+		public long LineNumber { get; set; }
+		/// <summary>
+		/// Gets or sets JavaScript script column number.
+		/// </summary>
+		public long ColumnNumber { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Console/ClearMessagesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Console/ClearMessagesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs
index 687ca43..c09e125 100644
--- a/source/ChromeDevTools/Protocol/Console/ClearMessagesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Clears console messages collected in the browser.
 	/// </summary>
 	[Command(ProtocolName.Console.ClearMessages)]
+	[SupportedBy("iOS")]
 	public class ClearMessagesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Console/ClearMessagesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Console/ClearMessagesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommandResponse.cs
index 3b516e6..28e0344 100644
--- a/source/ChromeDevTools/Protocol/Console/ClearMessagesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/ClearMessagesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Clears console messages collected in the browser.
 	/// </summary>
 	[CommandResponse(ProtocolName.Console.ClearMessages)]
+	[SupportedBy("iOS")]
 	public class ClearMessagesCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/ConsoleMessage.cs b/source/ChromeDevTools/Protocol/iOS/Console/ConsoleMessage.cs
new file mode 100644
index 0000000..1c653bc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/ConsoleMessage.cs
@@ -0,0 +1,58 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Console message.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ConsoleMessage
+	{
+		/// <summary>
+		/// Gets or sets Message source.
+		/// </summary>
+		public string Source { get; set; }
+		/// <summary>
+		/// Gets or sets Message severity.
+		/// </summary>
+		public string Level { get; set; }
+		/// <summary>
+		/// Gets or sets Message text.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets Console message type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the message origin.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Line number in the resource that generated this message.
+		/// </summary>
+		public long Line { get; set; }
+		/// <summary>
+		/// Gets or sets Column number on the line in the resource that generated this message.
+		/// </summary>
+		public long Column { get; set; }
+		/// <summary>
+		/// Gets or sets Repeat count for repeated messages.
+		/// </summary>
+		public long RepeatCount { get; set; }
+		/// <summary>
+		/// Gets or sets Message parameters in case of the formatted message.
+		/// </summary>
+		public Runtime.RemoteObject[] Parameters { get; set; }
+		/// <summary>
+		/// Gets or sets JavaScript stack trace for assertions and error messages.
+		/// </summary>
+		public CallFrame[] StackTrace { get; set; }
+		/// <summary>
+		/// Gets or sets Identifier of the network request associated with this message.
+		/// </summary>
+		public string NetworkRequestId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Console/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Console/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs
index 4dcc177..03c9476 100644
--- a/source/ChromeDevTools/Protocol/Console/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Disables console domain, prevents further console messages from being reported to the client.
 	/// </summary>
 	[Command(ProtocolName.Console.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Console/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Console/DisableCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Console/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/DisableCommandResponse.cs
index a54213b..33d69b8 100644
--- a/source/ChromeDevTools/Protocol/Console/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Disables console domain, prevents further console messages from being reported to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.Console.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Console/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Console/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs
index 16f8e9d..9029301 100644
--- a/source/ChromeDevTools/Protocol/Console/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification.
 	/// </summary>
 	[Command(ProtocolName.Console.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Console/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Console/EnableCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Console/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/EnableCommandResponse.cs
index e683fd2..d76690e 100644
--- a/source/ChromeDevTools/Protocol/Console/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification.
 	/// </summary>
 	[CommandResponse(ProtocolName.Console.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Console/MessageAddedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Console/MessageAddedEvent.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Console/MessageAddedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/MessageAddedEvent.cs
index bd53217..3968fb7 100644
--- a/source/ChromeDevTools/Protocol/Console/MessageAddedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/MessageAddedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Issued when new console message is added.
 	/// </summary>
 	[Event(ProtocolName.Console.MessageAdded)]
+	[SupportedBy("iOS")]
 	public class MessageAddedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/MessageRepeatCountUpdatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Console/MessageRepeatCountUpdatedEvent.cs
new file mode 100644
index 0000000..02308be
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/MessageRepeatCountUpdatedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Issued when subsequent message(s) are equal to the previous one(s).
+	/// </summary>
+	[Event(ProtocolName.Console.MessageRepeatCountUpdated)]
+	[SupportedBy("iOS")]
+	public class MessageRepeatCountUpdatedEvent
+	{
+		/// <summary>
+		/// Gets or sets New repeat count value.
+		/// </summary>
+		public long Count { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Console/MessagesClearedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Console/MessagesClearedEvent.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Console/MessagesClearedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Console/MessagesClearedEvent.cs
index d793aa2..a6a0062 100644
--- a/source/ChromeDevTools/Protocol/Console/MessagesClearedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Console/MessagesClearedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Console
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
 {
 	/// <summary>
 	/// Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation.
 	/// </summary>
 	[Event(ProtocolName.Console.MessagesCleared)]
+	[SupportedBy("iOS")]
 	public class MessagesClearedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs
new file mode 100644
index 0000000..9de82a0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.
+	/// </summary>
+	[Command(ProtocolName.Console.SetMonitoringXHREnabled)]
+	[SupportedBy("iOS")]
+	public class SetMonitoringXHREnabledCommand
+	{
+		/// <summary>
+		/// Gets or sets Monitoring enabled state.
+		/// </summary>
+		public bool Enabled { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommandResponse.cs
new file mode 100644
index 0000000..7d3ea1e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Console/SetMonitoringXHREnabledCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Console
+{
+	/// <summary>
+	/// Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.
+	/// </summary>
+	[CommandResponse(ProtocolName.Console.SetMonitoringXHREnabled)]
+	[SupportedBy("iOS")]
+	public class SetMonitoringXHREnabledCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/AccessibilityProperties.cs b/source/ChromeDevTools/Protocol/iOS/DOM/AccessibilityProperties.cs
new file mode 100644
index 0000000..b3ecf73
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/AccessibilityProperties.cs
@@ -0,0 +1,126 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// A structure holding accessibility properties.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class AccessibilityProperties
+	{
+		/// <summary>
+		/// Gets or sets <code>DOMNode</code> id of the accessibility object referenced by aria-activedescendant.
+		/// </summary>
+		public long ActiveDescendantNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Value of @aria-busy on current or ancestor node.
+		/// </summary>
+		public bool Busy { get; set; }
+		/// <summary>
+		/// Gets or sets Checked state of certain form controls.
+		/// </summary>
+		public string Checked { get; set; }
+		/// <summary>
+		/// Gets or sets Array of <code>DOMNode</code> ids of the accessibility tree children if available.
+		/// </summary>
+		public long[] ChildNodeIds { get; set; }
+		/// <summary>
+		/// Gets or sets Array of <code>DOMNode</code> ids of any nodes referenced via @aria-controls.
+		/// </summary>
+		public long[] ControlledNodeIds { get; set; }
+		/// <summary>
+		/// Gets or sets Disabled state of form controls.
+		/// </summary>
+		public bool Disabled { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether there is an existing AX object for the DOM node. If this is false, all the other properties will be default values.
+		/// </summary>
+		public bool Exists { get; set; }
+		/// <summary>
+		/// Gets or sets Expanded state.
+		/// </summary>
+		public bool Expanded { get; set; }
+		/// <summary>
+		/// Gets or sets Array of <code>DOMNode</code> ids of any nodes referenced via @aria-flowto.
+		/// </summary>
+		public long[] FlowedNodeIds { get; set; }
+		/// <summary>
+		/// Gets or sets Focused state. Only defined on focusable elements.
+		/// </summary>
+		public bool Focused { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether the accessibility of the associated AX object node is ignored, whether heuristically or explicitly.
+		/// </summary>
+		public bool Ignored { get; set; }
+		/// <summary>
+		/// Gets or sets State indicating whether the accessibility of the associated AX object node is ignored by default for node type.
+		/// </summary>
+		public bool IgnoredByDefault { get; set; }
+		/// <summary>
+		/// Gets or sets Invalid status of form controls.
+		/// </summary>
+		public string Invalid { get; set; }
+		/// <summary>
+		/// Gets or sets Hidden state. True if node or an ancestor is hidden via CSS or explicit @aria-hidden, to clarify why the element is ignored.
+		/// </summary>
+		public bool Hidden { get; set; }
+		/// <summary>
+		/// Gets or sets Computed label value for the node, sometimes calculated by referencing other nodes.
+		/// </summary>
+		public string Label { get; set; }
+		/// <summary>
+		/// Gets or sets Value of @aria-atomic.
+		/// </summary>
+		public bool LiveRegionAtomic { get; set; }
+		/// <summary>
+		/// Gets or sets Token value(s) of element's @aria-relevant attribute. Array of string values matching $ref LiveRegionRelevant. FIXME: Enum values blocked by http://webkit.org/b/133711
+		/// </summary>
+		public string[] LiveRegionRelevant { get; set; }
+		/// <summary>
+		/// Gets or sets Value of element's @aria-live attribute.
+		/// </summary>
+		public string LiveRegionStatus { get; set; }
+		/// <summary>
+		/// Gets or sets <code>DOMNode</code> id of node or closest ancestor node that has a mousedown, mouseup, or click event handler.
+		/// </summary>
+		public long MouseEventNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Target <code>DOMNode</code> id.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Array of <code>DOMNode</code> ids of any nodes referenced via @aria-owns.
+		/// </summary>
+		public long[] OwnedNodeIds { get; set; }
+		/// <summary>
+		/// Gets or sets <code>DOMNode</code> id of the accessibility tree parent object if available.
+		/// </summary>
+		public long ParentNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Pressed state for toggle buttons.
+		/// </summary>
+		public bool Pressed { get; set; }
+		/// <summary>
+		/// Gets or sets Readonly state of text controls.
+		/// </summary>
+		public bool Readonly { get; set; }
+		/// <summary>
+		/// Gets or sets Required state of form controls.
+		/// </summary>
+		public bool Required { get; set; }
+		/// <summary>
+		/// Gets or sets Computed value for first recognized role token, default role per element, or overridden role.
+		/// </summary>
+		public string Role { get; set; }
+		/// <summary>
+		/// Gets or sets Selected state of certain form controls.
+		/// </summary>
+		public bool Selected { get; set; }
+		/// <summary>
+		/// Gets or sets Array of <code>DOMNode</code> ids of any children marked as selected.
+		/// </summary>
+		public long[] SelectedChildNodeIds { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/AttributeModifiedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/AttributeModifiedEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/AttributeModifiedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/AttributeModifiedEvent.cs
index 3ae8afd..c0c54da 100644
--- a/source/ChromeDevTools/Protocol/DOM/AttributeModifiedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/AttributeModifiedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Fired when <code>Element</code>'s attribute is modified.
 	/// </summary>
 	[Event(ProtocolName.DOM.AttributeModified)]
+	[SupportedBy("iOS")]
 	public class AttributeModifiedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/AttributeRemovedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/AttributeRemovedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/AttributeRemovedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/AttributeRemovedEvent.cs
index 01cba27..5945bc4 100644
--- a/source/ChromeDevTools/Protocol/DOM/AttributeRemovedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/AttributeRemovedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Fired when <code>Element</code>'s attribute is removed.
 	/// </summary>
 	[Event(ProtocolName.DOM.AttributeRemoved)]
+	[SupportedBy("iOS")]
 	public class AttributeRemovedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/CharacterDataModifiedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/CharacterDataModifiedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/CharacterDataModifiedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/CharacterDataModifiedEvent.cs
index c3d7acf..fe4c903 100644
--- a/source/ChromeDevTools/Protocol/DOM/CharacterDataModifiedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/CharacterDataModifiedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Mirrors <code>DOMCharacterDataModified</code> event.
 	/// </summary>
 	[Event(ProtocolName.DOM.CharacterDataModified)]
+	[SupportedBy("iOS")]
 	public class CharacterDataModifiedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ChildNodeCountUpdatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeCountUpdatedEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/ChildNodeCountUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeCountUpdatedEvent.cs
index 1bf7452..5e9626f 100644
--- a/source/ChromeDevTools/Protocol/DOM/ChildNodeCountUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeCountUpdatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Fired when <code>Container</code>'s child node count has changed.
 	/// </summary>
 	[Event(ProtocolName.DOM.ChildNodeCountUpdated)]
+	[SupportedBy("iOS")]
 	public class ChildNodeCountUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ChildNodeInsertedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeInsertedEvent.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/DOM/ChildNodeInsertedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeInsertedEvent.cs
index bc07bb0..08315e1 100644
--- a/source/ChromeDevTools/Protocol/DOM/ChildNodeInsertedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeInsertedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Mirrors <code>DOMNodeInserted</code> event.
 	/// </summary>
 	[Event(ProtocolName.DOM.ChildNodeInserted)]
+	[SupportedBy("iOS")]
 	public class ChildNodeInsertedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ChildNodeRemovedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeRemovedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/ChildNodeRemovedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeRemovedEvent.cs
index e346d75..fd9a054 100644
--- a/source/ChromeDevTools/Protocol/DOM/ChildNodeRemovedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ChildNodeRemovedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Mirrors <code>DOMNodeRemoved</code> event.
 	/// </summary>
 	[Event(ProtocolName.DOM.ChildNodeRemoved)]
+	[SupportedBy("iOS")]
 	public class ChildNodeRemovedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/DiscardSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/DiscardSearchResultsCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs
index 3df17a8..d81591f 100644
--- a/source/ChromeDevTools/Protocol/DOM/DiscardSearchResultsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.
 	/// </summary>
 	[Command(ProtocolName.DOM.DiscardSearchResults)]
+	[SupportedBy("iOS")]
 	public class DiscardSearchResultsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/DiscardSearchResultsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/DiscardSearchResultsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommandResponse.cs
index 329125e..555fa29 100644
--- a/source/ChromeDevTools/Protocol/DOM/DiscardSearchResultsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/DiscardSearchResultsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.DiscardSearchResults)]
+	[SupportedBy("iOS")]
 	public class DiscardSearchResultsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/DocumentUpdatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/DocumentUpdatedEvent.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/DocumentUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/DocumentUpdatedEvent.cs
index bce32ee..10ccd70 100644
--- a/source/ChromeDevTools/Protocol/DOM/DocumentUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/DocumentUpdatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Fired when <code>Document</code> has been totally updated. Node ids are no longer valid.
 	/// </summary>
 	[Event(ProtocolName.DOM.DocumentUpdated)]
+	[SupportedBy("iOS")]
 	public class DocumentUpdatedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/EventListener.cs b/source/ChromeDevTools/Protocol/iOS/DOM/EventListener.cs
new file mode 100644
index 0000000..6e769a3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/EventListener.cs
@@ -0,0 +1,46 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// A structure holding event listener properties.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class EventListener
+	{
+		/// <summary>
+		/// Gets or sets <code>EventListener</code>'s type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets <code>EventListener</code>'s useCapture.
+		/// </summary>
+		public bool UseCapture { get; set; }
+		/// <summary>
+		/// Gets or sets <code>EventListener</code>'s isAttribute.
+		/// </summary>
+		public bool IsAttribute { get; set; }
+		/// <summary>
+		/// Gets or sets Target <code>DOMNode</code> id.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Event handler function body.
+		/// </summary>
+		public string HandlerBody { get; set; }
+		/// <summary>
+		/// Gets or sets Handler code location.
+		/// </summary>
+		public Debugger.Location Location { get; set; }
+		/// <summary>
+		/// Gets or sets Source script URL.
+		/// </summary>
+		public string SourceName { get; set; }
+		/// <summary>
+		/// Gets or sets Event handler function value.
+		/// </summary>
+		public Runtime.RemoteObject Handler { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/FocusCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/DOM/FocusCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs
index 11fe95e..0632f5f 100644
--- a/source/ChromeDevTools/Protocol/DOM/FocusCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Focuses the given element.
 	/// </summary>
 	[Command(ProtocolName.DOM.Focus)]
+	[SupportedBy("iOS")]
 	public class FocusCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/FocusCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/FocusCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/FocusCommandResponse.cs
index add850d..59fa14a 100644
--- a/source/ChromeDevTools/Protocol/DOM/FocusCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/FocusCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Focuses the given element.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.Focus)]
+	[SupportedBy("iOS")]
 	public class FocusCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs
new file mode 100644
index 0000000..988699c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Returns a dictionary of accessibility properties for the node.
+	/// </summary>
+	[Command(ProtocolName.DOM.GetAccessibilityPropertiesForNode)]
+	[SupportedBy("iOS")]
+	public class GetAccessibilityPropertiesForNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node for which to get accessibility properties.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommandResponse.cs
new file mode 100644
index 0000000..8c37d3a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetAccessibilityPropertiesForNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Returns a dictionary of accessibility properties for the node.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.GetAccessibilityPropertiesForNode)]
+	[SupportedBy("iOS")]
+	public class GetAccessibilityPropertiesForNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Dictionary of relevant accessibility properties.
+		/// </summary>
+		public AccessibilityProperties Properties { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/GetAttributesCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/GetAttributesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs
index 49f614f..95dfe9e 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetAttributesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns attributes for the specified node.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetAttributes)]
+	[SupportedBy("iOS")]
 	public class GetAttributesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetAttributesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/GetAttributesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommandResponse.cs
index d87bdc9..46bc22c 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetAttributesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetAttributesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns attributes for the specified node.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetAttributes)]
+	[SupportedBy("iOS")]
 	public class GetAttributesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetDocumentCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOM/GetDocumentCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs
index 35cb6f0..27e9e1e 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetDocumentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns the root DOM node to the caller.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetDocument)]
+	[SupportedBy("iOS")]
 	public class GetDocumentCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/GetDocumentCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/GetDocumentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommandResponse.cs
index 724e11b..33abd8f 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetDocumentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetDocumentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns the root DOM node to the caller.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetDocument)]
+	[SupportedBy("iOS")]
 	public class GetDocumentCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetEventListenersForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/DOM/GetEventListenersForNodeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs
index 737a0a2..b5a6111 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetEventListenersForNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns event listeners relevant to the node.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetEventListenersForNode)]
+	[SupportedBy("iOS")]
 	public class GetEventListenersForNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetEventListenersForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/GetEventListenersForNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommandResponse.cs
index 461143d..a2bc9ba 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetEventListenersForNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetEventListenersForNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns event listeners relevant to the node.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetEventListenersForNode)]
+	[SupportedBy("iOS")]
 	public class GetEventListenersForNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/GetOuterHTMLCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs
index 59dac79..dc1e0c9 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetOuterHTMLCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns node's HTML markup.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetOuterHTML)]
+	[SupportedBy("iOS")]
 	public class GetOuterHTMLCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetOuterHTMLCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/GetOuterHTMLCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommandResponse.cs
index ed0f645..7a19d74 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetOuterHTMLCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetOuterHTMLCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns node's HTML markup.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetOuterHTML)]
+	[SupportedBy("iOS")]
 	public class GetOuterHTMLCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetSearchResultsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/DOM/GetSearchResultsCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs
index 6e6abd0..4b30ae7 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetSearchResultsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.
 	/// </summary>
 	[Command(ProtocolName.DOM.GetSearchResults)]
+	[SupportedBy("iOS")]
 	public class GetSearchResultsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/GetSearchResultsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/GetSearchResultsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommandResponse.cs
index eb32459..6531648 100644
--- a/source/ChromeDevTools/Protocol/DOM/GetSearchResultsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/GetSearchResultsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.GetSearchResults)]
+	[SupportedBy("iOS")]
 	public class GetSearchResultsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/HideHighlightCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/HideHighlightCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs
index 7069680..24cf242 100644
--- a/source/ChromeDevTools/Protocol/DOM/HideHighlightCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Hides DOM node highlight.
 	/// </summary>
 	[Command(ProtocolName.DOM.HideHighlight)]
+	[SupportedBy("iOS")]
 	public class HideHighlightCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/HideHighlightCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOM/HideHighlightCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommandResponse.cs
index 1cea64f..5383313 100644
--- a/source/ChromeDevTools/Protocol/DOM/HideHighlightCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HideHighlightCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Hides DOM node highlight.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.HideHighlight)]
+	[SupportedBy("iOS")]
 	public class HideHighlightCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightConfig.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightConfig.cs
new file mode 100644
index 0000000..338336f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightConfig.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Configuration data for the highlighting of page elements.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class HighlightConfig
+	{
+		/// <summary>
+		/// Gets or sets Whether the node info tooltip should be shown (default: false).
+		/// </summary>
+		public bool ShowInfo { get; set; }
+		/// <summary>
+		/// Gets or sets The content box highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor ContentColor { get; set; }
+		/// <summary>
+		/// Gets or sets The padding highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor PaddingColor { get; set; }
+		/// <summary>
+		/// Gets or sets The border highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor BorderColor { get; set; }
+		/// <summary>
+		/// Gets or sets The margin highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor MarginColor { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs
new file mode 100644
index 0000000..a2288fa
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Highlights owner element of the frame with given id.
+	/// </summary>
+	[Command(ProtocolName.DOM.HighlightFrame)]
+	[SupportedBy("iOS")]
+	public class HighlightFrameCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the frame to highlight.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets The content box highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor ContentColor { get; set; }
+		/// <summary>
+		/// Gets or sets The content box highlight outline color (default: transparent).
+		/// </summary>
+		public RGBAColor ContentOutlineColor { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/DOM/HighlightFrameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommandResponse.cs
index 6c23ab7..805ac35 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightFrameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightFrameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Highlights owner element of the frame with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.HighlightFrame)]
+	[SupportedBy("iOS")]
 	public class HighlightFrameCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs
new file mode 100644
index 0000000..fc664e6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified.
+	/// </summary>
+	[Command(ProtocolName.DOM.HighlightNode)]
+	[SupportedBy("iOS")]
+	public class HighlightNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets A descriptor for the highlight appearance.
+		/// </summary>
+		public HighlightConfig HighlightConfig { get; set; }
+		/// <summary>
+		/// Gets or sets Identifier of the node to highlight.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets JavaScript object id of the node to be highlighted.
+		/// </summary>
+		public string ObjectId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/HighlightNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommandResponse.cs
index 6001250..1efabd0 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.HighlightNode)]
+	[SupportedBy("iOS")]
 	public class HighlightNodeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs
new file mode 100644
index 0000000..c02c2f7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommand.cs
@@ -0,0 +1,31 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Highlights given quad. Coordinates are absolute with respect to the main frame viewport.
+	/// </summary>
+	[Command(ProtocolName.DOM.HighlightQuad)]
+	[SupportedBy("iOS")]
+	public class HighlightQuadCommand
+	{
+		/// <summary>
+		/// Gets or sets Quad to highlight
+		/// </summary>
+		public double[] Quad { get; set; }
+		/// <summary>
+		/// Gets or sets The highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor Color { get; set; }
+		/// <summary>
+		/// Gets or sets The highlight outline color (default: transparent).
+		/// </summary>
+		public RGBAColor OutlineColor { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default).
+		/// </summary>
+		public bool UsePageCoordinates { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightQuadCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/DOM/HighlightQuadCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommandResponse.cs
index 389f558..2c1be17 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightQuadCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightQuadCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Highlights given quad. Coordinates are absolute with respect to the main frame viewport.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.HighlightQuad)]
+	[SupportedBy("iOS")]
 	public class HighlightQuadCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs
new file mode 100644
index 0000000..16dd9d7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommand.cs
@@ -0,0 +1,43 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.
+	/// </summary>
+	[Command(ProtocolName.DOM.HighlightRect)]
+	[SupportedBy("iOS")]
+	public class HighlightRectCommand
+	{
+		/// <summary>
+		/// Gets or sets X coordinate
+		/// </summary>
+		public long X { get; set; }
+		/// <summary>
+		/// Gets or sets Y coordinate
+		/// </summary>
+		public long Y { get; set; }
+		/// <summary>
+		/// Gets or sets Rectangle width
+		/// </summary>
+		public long Width { get; set; }
+		/// <summary>
+		/// Gets or sets Rectangle height
+		/// </summary>
+		public long Height { get; set; }
+		/// <summary>
+		/// Gets or sets The highlight fill color (default: transparent).
+		/// </summary>
+		public RGBAColor Color { get; set; }
+		/// <summary>
+		/// Gets or sets The highlight outline color (default: transparent).
+		/// </summary>
+		public RGBAColor OutlineColor { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default).
+		/// </summary>
+		public bool UsePageCoordinates { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/HighlightRectCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/DOM/HighlightRectCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommandResponse.cs
index 7c9a144..d5b61dd 100644
--- a/source/ChromeDevTools/Protocol/DOM/HighlightRectCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightRectCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.HighlightRect)]
+	[SupportedBy("iOS")]
 	public class HighlightRectCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs
new file mode 100644
index 0000000..23e3075
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Highlights all DOM nodes that match a given selector. A string containing a CSS selector must be specified.
+	/// </summary>
+	[Command(ProtocolName.DOM.HighlightSelector)]
+	[SupportedBy("iOS")]
+	public class HighlightSelectorCommand
+	{
+		/// <summary>
+		/// Gets or sets A descriptor for the highlight appearance.
+		/// </summary>
+		public HighlightConfig HighlightConfig { get; set; }
+		/// <summary>
+		/// Gets or sets A CSS selector for finding matching nodes to highlight.
+		/// </summary>
+		public string SelectorString { get; set; }
+		/// <summary>
+		/// Gets or sets Identifier of the frame which will be searched using the selector.  If not provided, the main frame will be used.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommandResponse.cs
new file mode 100644
index 0000000..a72cc6f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/HighlightSelectorCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Highlights all DOM nodes that match a given selector. A string containing a CSS selector must be specified.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.HighlightSelector)]
+	[SupportedBy("iOS")]
+	public class HighlightSelectorCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/InlineStyleInvalidatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/InlineStyleInvalidatedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/InlineStyleInvalidatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/InlineStyleInvalidatedEvent.cs
index 18bf0b5..ffbfd6a 100644
--- a/source/ChromeDevTools/Protocol/DOM/InlineStyleInvalidatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/InlineStyleInvalidatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Fired when <code>Element</code>'s inline style is modified via a CSS property modification.
 	/// </summary>
 	[Event(ProtocolName.DOM.InlineStyleInvalidated)]
+	[SupportedBy("iOS")]
 	public class InlineStyleInvalidatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/LiveRegionRelevant.cs b/source/ChromeDevTools/Protocol/iOS/DOM/LiveRegionRelevant.cs
new file mode 100644
index 0000000..856cc90
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/LiveRegionRelevant.cs
@@ -0,0 +1,13 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM{
+	/// <summary>
+	/// Token values of @aria-relevant attribute.
+	/// </summary>
+	public enum LiveRegionRelevant
+	{
+			Additions,
+			Removals,
+			Text,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/MarkUndoableStateCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/MarkUndoableStateCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs
index c698c52..49e3e00 100644
--- a/source/ChromeDevTools/Protocol/DOM/MarkUndoableStateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Marks last undoable state.
 	/// </summary>
 	[Command(ProtocolName.DOM.MarkUndoableState)]
+	[SupportedBy("iOS")]
 	public class MarkUndoableStateCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/MarkUndoableStateCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOM/MarkUndoableStateCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommandResponse.cs
index 65e7b59..d919036 100644
--- a/source/ChromeDevTools/Protocol/DOM/MarkUndoableStateCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/MarkUndoableStateCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Marks last undoable state.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.MarkUndoableState)]
+	[SupportedBy("iOS")]
 	public class MarkUndoableStateCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs
new file mode 100644
index 0000000..be8c71b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Moves node into the new container, places it before the given anchor.
+	/// </summary>
+	[Command(ProtocolName.DOM.MoveTo)]
+	[SupportedBy("iOS")]
+	public class MoveToCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to drop.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Id of the element to drop into.
+		/// </summary>
+		public long TargetNodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Drop node before given one.
+		/// </summary>
+		public long InsertBeforeNodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/MoveToCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/MoveToCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommandResponse.cs
index 2067322..434d3df 100644
--- a/source/ChromeDevTools/Protocol/DOM/MoveToCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/MoveToCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Moves node into the new container, places it before the given anchor.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.MoveTo)]
+	[SupportedBy("iOS")]
 	public class MoveToCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/Node.cs b/source/ChromeDevTools/Protocol/iOS/DOM/Node.cs
new file mode 100644
index 0000000..e5505c6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/Node.cs
@@ -0,0 +1,106 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Node
+	{
+		/// <summary>
+		/// Gets or sets Node identifier that is passed into the rest of the DOM messages as the <code>nodeId</code>. Backend will only push node with given <code>id</code> once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Node</code>'s nodeType.
+		/// </summary>
+		public long NodeType { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Node</code>'s nodeName.
+		/// </summary>
+		public string NodeName { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Node</code>'s localName.
+		/// </summary>
+		public string LocalName { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Node</code>'s nodeValue.
+		/// </summary>
+		public string NodeValue { get; set; }
+		/// <summary>
+		/// Gets or sets Child count for <code>Container</code> nodes.
+		/// </summary>
+		public long ChildNodeCount { get; set; }
+		/// <summary>
+		/// Gets or sets Child nodes of this node when requested with children.
+		/// </summary>
+		public Node[] Children { get; set; }
+		/// <summary>
+		/// Gets or sets Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>.
+		/// </summary>
+		public string[] Attributes { get; set; }
+		/// <summary>
+		/// Gets or sets Document URL that <code>Document</code> or <code>FrameOwner</code> node points to.
+		/// </summary>
+		public string DocumentURL { get; set; }
+		/// <summary>
+		/// Gets or sets Base URL that <code>Document</code> or <code>FrameOwner</code> node uses for URL completion.
+		/// </summary>
+		public string BaseURL { get; set; }
+		/// <summary>
+		/// Gets or sets <code>DocumentType</code>'s publicId.
+		/// </summary>
+		public string PublicId { get; set; }
+		/// <summary>
+		/// Gets or sets <code>DocumentType</code>'s systemId.
+		/// </summary>
+		public string SystemId { get; set; }
+		/// <summary>
+		/// Gets or sets <code>DocumentType</code>'s internalSubset.
+		/// </summary>
+		public string InternalSubset { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Document</code>'s XML version in case of XML documents.
+		/// </summary>
+		public string XmlVersion { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Attr</code>'s name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets <code>Attr</code>'s value.
+		/// </summary>
+		public string Value { get; set; }
+		/// <summary>
+		/// Gets or sets Pseudo element type for this node.
+		/// </summary>
+		public PseudoType PseudoType { get; set; }
+		/// <summary>
+		/// Gets or sets Frame ID for frame owner elements.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Content document for frame owner elements.
+		/// </summary>
+		public Node ContentDocument { get; set; }
+		/// <summary>
+		/// Gets or sets Shadow root list for given element host.
+		/// </summary>
+		public Node[] ShadowRoots { get; set; }
+		/// <summary>
+		/// Gets or sets Content document fragment for template elements
+		/// </summary>
+		public Node TemplateContent { get; set; }
+		/// <summary>
+		/// Gets or sets Pseudo elements associated with this node.
+		/// </summary>
+		public Node[] PseudoElements { get; set; }
+		/// <summary>
+		/// Gets or sets Computed value for first recognized role token, default role per element, or overridden role.
+		/// </summary>
+		public string Role { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs
new file mode 100644
index 0000000..ac7428d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.
+	/// </summary>
+	[Command(ProtocolName.DOM.PerformSearch)]
+	[SupportedBy("iOS")]
+	public class PerformSearchCommand
+	{
+		/// <summary>
+		/// Gets or sets Plain text or query selector or XPath search query.
+		/// </summary>
+		public string Query { get; set; }
+		/// <summary>
+		/// Gets or sets Ids of nodes to use as starting points for the search.
+		/// </summary>
+		public long[] NodeIds { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/PerformSearchCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommandResponse.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/DOM/PerformSearchCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommandResponse.cs
index 863e183..3ad5db4 100644
--- a/source/ChromeDevTools/Protocol/DOM/PerformSearchCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PerformSearchCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.PerformSearch)]
+	[SupportedBy("iOS")]
 	public class PerformSearchCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/PseudoElementAddedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PseudoElementAddedEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/PseudoElementAddedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/PseudoElementAddedEvent.cs
index 57f1ce2..775ca17 100644
--- a/source/ChromeDevTools/Protocol/DOM/PseudoElementAddedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PseudoElementAddedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Called when a pseudo element is added to an element.
 	/// </summary>
 	[Event(ProtocolName.DOM.PseudoElementAdded)]
+	[SupportedBy("iOS")]
 	public class PseudoElementAddedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/PseudoElementRemovedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PseudoElementRemovedEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/PseudoElementRemovedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/PseudoElementRemovedEvent.cs
index fc17ed5..1edd761 100644
--- a/source/ChromeDevTools/Protocol/DOM/PseudoElementRemovedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PseudoElementRemovedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Called when a pseudo element is removed from an element.
 	/// </summary>
 	[Event(ProtocolName.DOM.PseudoElementRemoved)]
+	[SupportedBy("iOS")]
 	public class PseudoElementRemovedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PseudoType.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PseudoType.cs
new file mode 100644
index 0000000..1b15302
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PseudoType.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM{
+	/// <summary>
+	/// Pseudo element type.
+	/// </summary>
+	public enum PseudoType
+	{
+			Before,
+			After,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs
new file mode 100644
index 0000000..e2cf9c9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Requests that the node is sent to the caller given its backend node id.
+	/// </summary>
+	[Command(ProtocolName.DOM.PushNodeByBackendIdToFrontend)]
+	[SupportedBy("iOS")]
+	public class PushNodeByBackendIdToFrontendCommand
+	{
+		/// <summary>
+		/// Gets or sets The backend node id of the node.
+		/// </summary>
+		public long BackendNodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommandResponse.cs
new file mode 100644
index 0000000..2ed18d5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByBackendIdToFrontendCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Requests that the node is sent to the caller given its backend node id.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.PushNodeByBackendIdToFrontend)]
+	[SupportedBy("iOS")]
+	public class PushNodeByBackendIdToFrontendCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets The pushed node's id.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/PushNodeByPathToFrontendCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/PushNodeByPathToFrontendCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs
index b4dc137..810c9e6 100644
--- a/source/ChromeDevTools/Protocol/DOM/PushNodeByPathToFrontendCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Requests that the node is sent to the caller given its path. // FIXME, use XPath
 	/// </summary>
 	[Command(ProtocolName.DOM.PushNodeByPathToFrontend)]
+	[SupportedBy("iOS")]
 	public class PushNodeByPathToFrontendCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/PushNodeByPathToFrontendCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/PushNodeByPathToFrontendCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommandResponse.cs
index f7a25d7..63a0fd7 100644
--- a/source/ChromeDevTools/Protocol/DOM/PushNodeByPathToFrontendCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/PushNodeByPathToFrontendCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Requests that the node is sent to the caller given its path. // FIXME, use XPath
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.PushNodeByPathToFrontend)]
+	[SupportedBy("iOS")]
 	public class PushNodeByPathToFrontendCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/QuerySelectorAllCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/QuerySelectorAllCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs
index fc7017c..f086fe8 100644
--- a/source/ChromeDevTools/Protocol/DOM/QuerySelectorAllCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Executes <code>querySelectorAll</code> on a given node.
 	/// </summary>
 	[Command(ProtocolName.DOM.QuerySelectorAll)]
+	[SupportedBy("iOS")]
 	public class QuerySelectorAllCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/QuerySelectorAllCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/QuerySelectorAllCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommandResponse.cs
index 61b6641..6c61541 100644
--- a/source/ChromeDevTools/Protocol/DOM/QuerySelectorAllCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorAllCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Executes <code>querySelectorAll</code> on a given node.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.QuerySelectorAll)]
+	[SupportedBy("iOS")]
 	public class QuerySelectorAllCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/QuerySelectorCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/QuerySelectorCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs
index 647cfa1..d40fdd1 100644
--- a/source/ChromeDevTools/Protocol/DOM/QuerySelectorCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Executes <code>querySelector</code> on a given node.
 	/// </summary>
 	[Command(ProtocolName.DOM.QuerySelector)]
+	[SupportedBy("iOS")]
 	public class QuerySelectorCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/QuerySelectorCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/QuerySelectorCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommandResponse.cs
index 66ce69e..5f9091f 100644
--- a/source/ChromeDevTools/Protocol/DOM/QuerySelectorCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/QuerySelectorCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Executes <code>querySelector</code> on a given node.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.QuerySelector)]
+	[SupportedBy("iOS")]
 	public class QuerySelectorCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/RGBAColor.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RGBAColor.cs
new file mode 100644
index 0000000..9d2b82b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RGBAColor.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// A structure holding an RGBA color.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class RGBAColor
+	{
+		/// <summary>
+		/// Gets or sets The red component, in the [0-255] range.
+		/// </summary>
+		public long R { get; set; }
+		/// <summary>
+		/// Gets or sets The green component, in the [0-255] range.
+		/// </summary>
+		public long G { get; set; }
+		/// <summary>
+		/// Gets or sets The blue component, in the [0-255] range.
+		/// </summary>
+		public long B { get; set; }
+		/// <summary>
+		/// Gets or sets The alpha component, in the [0-1] range (default: 1).
+		/// </summary>
+		public double A { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/RedoCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/DOM/RedoCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs
index ce7916d..50dabcf 100644
--- a/source/ChromeDevTools/Protocol/DOM/RedoCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Re-does the last undone action.
 	/// </summary>
 	[Command(ProtocolName.DOM.Redo)]
+	[SupportedBy("iOS")]
 	public class RedoCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/RedoCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/RedoCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RedoCommandResponse.cs
index e7eb17e..c1c25ee 100644
--- a/source/ChromeDevTools/Protocol/DOM/RedoCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RedoCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Re-does the last undone action.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.Redo)]
+	[SupportedBy("iOS")]
 	public class RedoCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs
new file mode 100644
index 0000000..5e64b55
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Requests that group of <code>BackendNodeIds</code> is released.
+	/// </summary>
+	[Command(ProtocolName.DOM.ReleaseBackendNodeIds)]
+	[SupportedBy("iOS")]
+	public class ReleaseBackendNodeIdsCommand
+	{
+		/// <summary>
+		/// Gets or sets The backend node ids group name.
+		/// </summary>
+		public string NodeGroup { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommandResponse.cs
new file mode 100644
index 0000000..1308b65
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ReleaseBackendNodeIdsCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Requests that group of <code>BackendNodeIds</code> is released.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.ReleaseBackendNodeIds)]
+	[SupportedBy("iOS")]
+	public class ReleaseBackendNodeIdsCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/RemoveAttributeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/RemoveAttributeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs
index b45b489..5b7990b 100644
--- a/source/ChromeDevTools/Protocol/DOM/RemoveAttributeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Removes attribute with given name from an element with given id.
 	/// </summary>
 	[Command(ProtocolName.DOM.RemoveAttribute)]
+	[SupportedBy("iOS")]
 	public class RemoveAttributeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/RemoveAttributeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/DOM/RemoveAttributeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommandResponse.cs
index a28578b..b7475b4 100644
--- a/source/ChromeDevTools/Protocol/DOM/RemoveAttributeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveAttributeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Removes attribute with given name from an element with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.RemoveAttribute)]
+	[SupportedBy("iOS")]
 	public class RemoveAttributeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/RemoveNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOM/RemoveNodeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs
index a9ff304..f3681cf 100644
--- a/source/ChromeDevTools/Protocol/DOM/RemoveNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Removes node with given id.
 	/// </summary>
 	[Command(ProtocolName.DOM.RemoveNode)]
+	[SupportedBy("iOS")]
 	public class RemoveNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/RemoveNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOM/RemoveNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommandResponse.cs
index 89e1cb8..0ad495e 100644
--- a/source/ChromeDevTools/Protocol/DOM/RemoveNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RemoveNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Removes node with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.RemoveNode)]
+	[SupportedBy("iOS")]
 	public class RemoveNodeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/RequestChildNodesCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/DOM/RequestChildNodesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs
index 695bc91..096ca4c 100644
--- a/source/ChromeDevTools/Protocol/DOM/RequestChildNodesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth.
 	/// </summary>
 	[Command(ProtocolName.DOM.RequestChildNodes)]
+	[SupportedBy("iOS")]
 	public class RequestChildNodesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/RequestChildNodesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommandResponse.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOM/RequestChildNodesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommandResponse.cs
index 877a659..419699e 100644
--- a/source/ChromeDevTools/Protocol/DOM/RequestChildNodesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RequestChildNodesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.RequestChildNodes)]
+	[SupportedBy("iOS")]
 	public class RequestChildNodesCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/RequestNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/DOM/RequestNodeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs
index a2e53e4..34ad809 100644
--- a/source/ChromeDevTools/Protocol/DOM/RequestNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications.
 	/// </summary>
 	[Command(ProtocolName.DOM.RequestNode)]
+	[SupportedBy("iOS")]
 	public class RequestNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/RequestNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommandResponse.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/DOM/RequestNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommandResponse.cs
index 775e32b..7ba033d 100644
--- a/source/ChromeDevTools/Protocol/DOM/RequestNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/RequestNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.RequestNode)]
+	[SupportedBy("iOS")]
 	public class RequestNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ResolveNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/ResolveNodeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs
index 9d64160..9520d2a 100644
--- a/source/ChromeDevTools/Protocol/DOM/ResolveNodeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Resolves JavaScript node object for given node id.
 	/// </summary>
 	[Command(ProtocolName.DOM.ResolveNode)]
+	[SupportedBy("iOS")]
 	public class ResolveNodeCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ResolveNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/ResolveNodeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommandResponse.cs
index 87965ad..f98b517 100644
--- a/source/ChromeDevTools/Protocol/DOM/ResolveNodeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ResolveNodeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Resolves JavaScript node object for given node id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.ResolveNode)]
+	[SupportedBy("iOS")]
 	public class ResolveNodeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetAttributeValueCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/DOM/SetAttributeValueCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs
index 207ad88..fcea45b 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetAttributeValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets attribute for an element with given id.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetAttributeValue)]
+	[SupportedBy("iOS")]
 	public class SetAttributeValueCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetAttributeValueCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/DOM/SetAttributeValueCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommandResponse.cs
index bde77f9..440225d 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetAttributeValueCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributeValueCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets attribute for an element with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetAttributeValue)]
+	[SupportedBy("iOS")]
 	public class SetAttributeValueCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetAttributesAsTextCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/DOM/SetAttributesAsTextCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs
index 03938d1..16e233d 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetAttributesAsTextCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetAttributesAsText)]
+	[SupportedBy("iOS")]
 	public class SetAttributesAsTextCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetAttributesAsTextCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/SetAttributesAsTextCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommandResponse.cs
index 1208307..0ca7a85 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetAttributesAsTextCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetAttributesAsTextCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetAttributesAsText)]
+	[SupportedBy("iOS")]
 	public class SetAttributesAsTextCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetChildNodesEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetChildNodesEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/DOM/SetChildNodesEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetChildNodesEvent.cs
index f5567c0..45f45f7 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetChildNodesEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetChildNodesEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids.
 	/// </summary>
 	[Event(ProtocolName.DOM.SetChildNodes)]
+	[SupportedBy("iOS")]
 	public class SetChildNodesEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs
new file mode 100644
index 0000000..ecd9b62
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection.
+	/// </summary>
+	[Command(ProtocolName.DOM.SetInspectModeEnabled)]
+	[SupportedBy("iOS")]
+	public class SetInspectModeEnabledCommand
+	{
+		/// <summary>
+		/// Gets or sets True to enable inspection mode, false to disable it.
+		/// </summary>
+		public bool Enabled { get; set; }
+		/// <summary>
+		/// Gets or sets A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>.
+		/// </summary>
+		public HighlightConfig HighlightConfig { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommandResponse.cs
new file mode 100644
index 0000000..be9bd5e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetInspectModeEnabledCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
+{
+	/// <summary>
+	/// Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOM.SetInspectModeEnabled)]
+	[SupportedBy("iOS")]
+	public class SetInspectModeEnabledCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetNodeNameCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/SetNodeNameCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs
index e5ab75a..025a58b 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetNodeNameCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets node name for a node with given id.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetNodeName)]
+	[SupportedBy("iOS")]
 	public class SetNodeNameCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetNodeNameCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOM/SetNodeNameCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommandResponse.cs
index 139ba5c..741f1d0 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetNodeNameCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeNameCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets node name for a node with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetNodeName)]
+	[SupportedBy("iOS")]
 	public class SetNodeNameCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetNodeValueCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/SetNodeValueCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs
index 7138783..13bdaee 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetNodeValueCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets node value for a node with given id.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetNodeValue)]
+	[SupportedBy("iOS")]
 	public class SetNodeValueCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetNodeValueCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOM/SetNodeValueCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommandResponse.cs
index ed6dc57..f809522 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetNodeValueCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetNodeValueCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets node value for a node with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetNodeValue)]
+	[SupportedBy("iOS")]
 	public class SetNodeValueCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/SetOuterHTMLCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOM/SetOuterHTMLCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs
index 4a61583..11c8382 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetOuterHTMLCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets node HTML markup, returns new node id.
 	/// </summary>
 	[Command(ProtocolName.DOM.SetOuterHTML)]
+	[SupportedBy("iOS")]
 	public class SetOuterHTMLCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/SetOuterHTMLCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOM/SetOuterHTMLCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommandResponse.cs
index 51f1a5a..44a6abc 100644
--- a/source/ChromeDevTools/Protocol/DOM/SetOuterHTMLCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/SetOuterHTMLCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Sets node HTML markup, returns new node id.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.SetOuterHTML)]
+	[SupportedBy("iOS")]
 	public class SetOuterHTMLCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/ShadowRootPoppedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ShadowRootPoppedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/ShadowRootPoppedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ShadowRootPoppedEvent.cs
index cf25908..6a0ebdc 100644
--- a/source/ChromeDevTools/Protocol/DOM/ShadowRootPoppedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ShadowRootPoppedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Called when shadow root is popped from the element.
 	/// </summary>
 	[Event(ProtocolName.DOM.ShadowRootPopped)]
+	[SupportedBy("iOS")]
 	public class ShadowRootPoppedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/ShadowRootPushedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOM/ShadowRootPushedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOM/ShadowRootPushedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/ShadowRootPushedEvent.cs
index cd1c89c..17ea5a8 100644
--- a/source/ChromeDevTools/Protocol/DOM/ShadowRootPushedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/ShadowRootPushedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Called when shadow root is pushed into the element.
 	/// </summary>
 	[Event(ProtocolName.DOM.ShadowRootPushed)]
+	[SupportedBy("iOS")]
 	public class ShadowRootPushedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOM/UndoCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/DOM/UndoCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs
index 1fd652d..6241e2b 100644
--- a/source/ChromeDevTools/Protocol/DOM/UndoCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Undoes the last performed action.
 	/// </summary>
 	[Command(ProtocolName.DOM.Undo)]
+	[SupportedBy("iOS")]
 	public class UndoCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOM/UndoCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/DOM/UndoCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOM/UndoCommandResponse.cs
index a494bb2..ce0739f 100644
--- a/source/ChromeDevTools/Protocol/DOM/UndoCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOM/UndoCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOM
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOM
 {
 	/// <summary>
 	/// Undoes the last performed action.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOM.Undo)]
+	[SupportedBy("iOS")]
 	public class UndoCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/DOMBreakpointType.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/DOMBreakpointType.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/DOMDebugger/DOMBreakpointType.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/DOMBreakpointType.cs
index d1dd6bb..0d748af 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/DOMBreakpointType.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/DOMBreakpointType.cs
@@ -1,6 +1,6 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger{
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger{
 	/// <summary>
 	/// DOM breakpoint type.
 	/// </summary>
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveDOMBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs
index b56c9c6..17edec4 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveDOMBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveDOMBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveDOMBreakpointCommand
 	{
 		/// <summary>
@@ -17,6 +18,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
 		/// <summary>
 		/// Gets or sets Type of the breakpoint to remove.
 		/// </summary>
-		public DOMBreakpointType Type { get; set; }
+		public string Type { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
index 31104ac..94e1362 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveDOMBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.RemoveDOMBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveDOMBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
new file mode 100644
index 0000000..51f470b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
+{
+	/// <summary>
+	/// Removes breakpoint on particular DOM event.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.RemoveEventListenerBreakpoint)]
+	[SupportedBy("iOS")]
+	public class RemoveEventListenerBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Event name.
+		/// </summary>
+		public string EventName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
index e45714c..2141d62 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveEventListenerBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Removes breakpoint on particular DOM event.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.RemoveEventListenerBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveEventListenerBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
new file mode 100644
index 0000000..848ea24
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular native event.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.RemoveInstrumentationBreakpoint)]
+	[SupportedBy("iOS")]
+	public class RemoveInstrumentationBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Instrumentation name to stop on.
+		/// </summary>
+		public string EventName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
new file mode 100644
index 0000000..ccf8809
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveInstrumentationBreakpointCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular native event.
+	/// </summary>
+	[CommandResponse(ProtocolName.DOMDebugger.RemoveInstrumentationBreakpoint)]
+	[SupportedBy("iOS")]
+	public class RemoveInstrumentationBreakpointCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveXHRBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs
index 6ccc064..f2c00d1 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveXHRBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Removes breakpoint from XMLHttpRequest.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.RemoveXHRBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveXHRBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
index ea6cdf3..f61a31d 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/RemoveXHRBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Removes breakpoint from XMLHttpRequest.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.RemoveXHRBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveXHRBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetDOMBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetDOMBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs
index 814a07d..639467a 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetDOMBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on particular operation with DOM.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetDOMBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetDOMBreakpointCommand
 	{
 		/// <summary>
@@ -17,6 +18,6 @@ namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
 		/// <summary>
 		/// Gets or sets Type of the operation to stop upon.
 		/// </summary>
-		public DOMBreakpointType Type { get; set; }
+		public string Type { get; set; }
 	}
 }
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetDOMBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetDOMBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommandResponse.cs
index 8418581..57a3ebf 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetDOMBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetDOMBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on particular operation with DOM.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.SetDOMBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetDOMBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs
new file mode 100644
index 0000000..deae588
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
+{
+	/// <summary>
+	/// Sets breakpoint on particular DOM event.
+	/// </summary>
+	[Command(ProtocolName.DOMDebugger.SetEventListenerBreakpoint)]
+	[SupportedBy("iOS")]
+	public class SetEventListenerBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets DOM Event name to stop on (any DOM event will do).
+		/// </summary>
+		public string EventName { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
index 6e8fa10..d082516 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetEventListenerBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on particular DOM event.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.SetEventListenerBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetEventListenerBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetInstrumentationBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetInstrumentationBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs
index 2336eb2..ecfe221 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetInstrumentationBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on particular native event.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetInstrumentationBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetInstrumentationBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
index b57abae..a7bbbe2 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetInstrumentationBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on particular native event.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.SetInstrumentationBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetInstrumentationBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetXHRBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetXHRBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs
index de3d8b1..4c8f003 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetXHRBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on XMLHttpRequest.
 	/// </summary>
 	[Command(ProtocolName.DOMDebugger.SetXHRBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetXHRBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMDebugger/SetXHRBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOMDebugger/SetXHRBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommandResponse.cs
index 6c386f2..298e800 100644
--- a/source/ChromeDevTools/Protocol/DOMDebugger/SetXHRBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMDebugger/SetXHRBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMDebugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMDebugger
 {
 	/// <summary>
 	/// Sets breakpoint on XMLHttpRequest.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMDebugger.SetXHRBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetXHRBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMStorage/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs
index 06a595a..51d7f77 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	/// <summary>
 	/// Disables storage tracking, prevents storage events from being sent to the client.
 	/// </summary>
 	[Command(ProtocolName.DOMStorage.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMStorage/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommandResponse.cs
index 3004f8b..755a8e6 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	/// <summary>
 	/// Disables storage tracking, prevents storage events from being sent to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMStorage.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemAddedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemAddedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemAddedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemAddedEvent.cs
index 5b677b7..5dc5666 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemAddedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemAddedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Event(ProtocolName.DOMStorage.DomStorageItemAdded)]
+	[SupportedBy("iOS")]
 	public class DomStorageItemAddedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemRemovedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemRemovedEvent.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemRemovedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemRemovedEvent.cs
index 2a16b15..d3f9c32 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemRemovedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemRemovedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Event(ProtocolName.DOMStorage.DomStorageItemRemoved)]
+	[SupportedBy("iOS")]
 	public class DomStorageItemRemovedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemUpdatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemUpdatedEvent.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemUpdatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemUpdatedEvent.cs
index 1cccc9b..6908e81 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemUpdatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemUpdatedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Event(ProtocolName.DOMStorage.DomStorageItemUpdated)]
+	[SupportedBy("iOS")]
 	public class DomStorageItemUpdatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemsClearedEvent.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemsClearedEvent.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemsClearedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemsClearedEvent.cs
index 6148d40..e375bf1 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/DomStorageItemsClearedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/DomStorageItemsClearedEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Event(ProtocolName.DOMStorage.DomStorageItemsCleared)]
+	[SupportedBy("iOS")]
 	public class DomStorageItemsClearedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/DOMStorage/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs
index 382d4dc..b626dc8 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	/// <summary>
 	/// Enables storage tracking, storage events will now be delivered to the client.
 	/// </summary>
 	[Command(ProtocolName.DOMStorage.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMStorage/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommandResponse.cs
index 0c58aab..064a512 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	/// <summary>
 	/// Enables storage tracking, storage events will now be delivered to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.DOMStorage.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/GetDOMStorageItemsCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/DOMStorage/GetDOMStorageItemsCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs
index 433ae8f..d72d3c9 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/GetDOMStorageItemsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.GetDOMStorageItems)]
+	[SupportedBy("iOS")]
 	public class GetDOMStorageItemsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/GetDOMStorageItemsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/DOMStorage/GetDOMStorageItemsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommandResponse.cs
index 51ad01e..cd6bbbe 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/GetDOMStorageItemsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/GetDOMStorageItemsCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[CommandResponse(ProtocolName.DOMStorage.GetDOMStorageItems)]
+	[SupportedBy("iOS")]
 	public class GetDOMStorageItemsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/RemoveDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/DOMStorage/RemoveDOMStorageItemCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs
index de93351..abbc806 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/RemoveDOMStorageItemCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.RemoveDOMStorageItem)]
+	[SupportedBy("iOS")]
 	public class RemoveDOMStorageItemCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/RemoveDOMStorageItemCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
index d98eb00..33932ac 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/RemoveDOMStorageItemCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[CommandResponse(ProtocolName.DOMStorage.RemoveDOMStorageItem)]
+	[SupportedBy("iOS")]
 	public class RemoveDOMStorageItemCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/SetDOMStorageItemCommand.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOMStorage/SetDOMStorageItemCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs
index 73134a2..aae2c50 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/SetDOMStorageItemCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[Command(ProtocolName.DOMStorage.SetDOMStorageItem)]
+	[SupportedBy("iOS")]
 	public class SetDOMStorageItemCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/SetDOMStorageItemCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommandResponse.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/DOMStorage/SetDOMStorageItemCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommandResponse.cs
index 697ccad..ac21ff3 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/SetDOMStorageItemCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/SetDOMStorageItemCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	[CommandResponse(ProtocolName.DOMStorage.SetDOMStorageItem)]
+	[SupportedBy("iOS")]
 	public class SetDOMStorageItemCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/DOMStorage/StorageId.cs b/source/ChromeDevTools/Protocol/iOS/DOMStorage/StorageId.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/DOMStorage/StorageId.cs
rename to source/ChromeDevTools/Protocol/iOS/DOMStorage/StorageId.cs
index ed783b8..c197dc9 100644
--- a/source/ChromeDevTools/Protocol/DOMStorage/StorageId.cs
+++ b/source/ChromeDevTools/Protocol/iOS/DOMStorage/StorageId.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.DOMStorage
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.DOMStorage
 {
 	/// <summary>
 	/// DOM Storage identifier.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class StorageId
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/AddDatabaseEvent.cs b/source/ChromeDevTools/Protocol/iOS/Database/AddDatabaseEvent.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Database/AddDatabaseEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/AddDatabaseEvent.cs
index 93a7cfc..9fd587b 100644
--- a/source/ChromeDevTools/Protocol/Database/AddDatabaseEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/AddDatabaseEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[Event(ProtocolName.Database.AddDatabase)]
+	[SupportedBy("iOS")]
 	public class AddDatabaseEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/Database.cs b/source/ChromeDevTools/Protocol/iOS/Database/Database.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Database/Database.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/Database.cs
index 6c06c04..3fea8d8 100644
--- a/source/ChromeDevTools/Protocol/Database/Database.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/Database.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	/// <summary>
 	/// Database object.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Database
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Database/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs
index cc8068d..09c7bd5 100644
--- a/source/ChromeDevTools/Protocol/Database/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	/// <summary>
 	/// Disables database tracking, prevents database events from being sent to the client.
 	/// </summary>
 	[Command(ProtocolName.Database.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Database/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Database/DisableCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Database/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/DisableCommandResponse.cs
index a176774..5930c88 100644
--- a/source/ChromeDevTools/Protocol/Database/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	/// <summary>
 	/// Disables database tracking, prevents database events from being sent to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.Database.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Database/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Database/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs
index a4ebb53..984fd4b 100644
--- a/source/ChromeDevTools/Protocol/Database/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	/// <summary>
 	/// Enables database tracking, database events will now be delivered to the client.
 	/// </summary>
 	[Command(ProtocolName.Database.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Database/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Database/EnableCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Database/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/EnableCommandResponse.cs
index 53faf6a..95737bc 100644
--- a/source/ChromeDevTools/Protocol/Database/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	/// <summary>
 	/// Enables database tracking, database events will now be delivered to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.Database.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Database/Error.cs b/source/ChromeDevTools/Protocol/iOS/Database/Error.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Database/Error.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/Error.cs
index 3dda65a..d391d0f 100644
--- a/source/ChromeDevTools/Protocol/Database/Error.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/Error.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	/// <summary>
 	/// Database error.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Error
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/ExecuteSQLCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Database/ExecuteSQLCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs
index a43ec46..b9e773c 100644
--- a/source/ChromeDevTools/Protocol/Database/ExecuteSQLCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[Command(ProtocolName.Database.ExecuteSQL)]
+	[SupportedBy("iOS")]
 	public class ExecuteSQLCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/ExecuteSQLCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Database/ExecuteSQLCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommandResponse.cs
index a33edd8..a6ee3dd 100644
--- a/source/ChromeDevTools/Protocol/Database/ExecuteSQLCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/ExecuteSQLCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[CommandResponse(ProtocolName.Database.ExecuteSQL)]
+	[SupportedBy("iOS")]
 	public class ExecuteSQLCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/GetDatabaseTableNamesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Database/GetDatabaseTableNamesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs
index 9074c6b..915ca70 100644
--- a/source/ChromeDevTools/Protocol/Database/GetDatabaseTableNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[Command(ProtocolName.Database.GetDatabaseTableNames)]
+	[SupportedBy("iOS")]
 	public class GetDatabaseTableNamesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Database/GetDatabaseTableNamesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Database/GetDatabaseTableNamesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommandResponse.cs
index 99d615c..ba4524e 100644
--- a/source/ChromeDevTools/Protocol/Database/GetDatabaseTableNamesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Database/GetDatabaseTableNamesCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Database
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Database
 {
 	[CommandResponse(ProtocolName.Database.GetDatabaseTableNames)]
+	[SupportedBy("iOS")]
 	public class GetDatabaseTableNamesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/AssertPauseReason.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/AssertPauseReason.cs
new file mode 100644
index 0000000..eccbd52
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/AssertPauseReason.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// The pause reason auxiliary data when paused because of an assertion.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class AssertPauseReason
+	{
+		/// <summary>
+		/// Gets or sets The console.assert message string if provided.
+		/// </summary>
+		public string Message { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointAction.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointAction.cs
new file mode 100644
index 0000000..57e6a3c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointAction.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Action to perform when a breakpoint is triggered.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class BreakpointAction
+	{
+		/// <summary>
+		/// Gets or sets Different kinds of breakpoint actions.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Data associated with this breakpoint type (e.g. for type "eval" this is the JavaScript string to evalulate).
+		/// </summary>
+		public string Data { get; set; }
+		/// <summary>
+		/// Gets or sets A frontend-assigned identifier for this breakpoint action.
+		/// </summary>
+		public long Id { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointOptions.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointOptions.cs
new file mode 100644
index 0000000..d3decc9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointOptions.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Extra options that modify breakpoint behavior.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class BreakpointOptions
+	{
+		/// <summary>
+		/// Gets or sets Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
+		/// </summary>
+		public string Condition { get; set; }
+		/// <summary>
+		/// Gets or sets Actions to perform automatically when the breakpoint is triggered.
+		/// </summary>
+		public BreakpointAction[] Actions { get; set; }
+		/// <summary>
+		/// Gets or sets Automatically continue after hitting this breakpoint and running actions.
+		/// </summary>
+		public bool AutoContinue { get; set; }
+		/// <summary>
+		/// Gets or sets Number of times to ignore this breakpoint, before stopping on the breakpoint and running actions.
+		/// </summary>
+		public long IgnoreCount { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointPauseReason.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointPauseReason.cs
new file mode 100644
index 0000000..4b8d820
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointPauseReason.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// The pause reason auxiliary data when paused because of hitting a breakpoint.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class BreakpointPauseReason
+	{
+		/// <summary>
+		/// Gets or sets The identifier of the breakpoint causing the pause.
+		/// </summary>
+		public string BreakpointId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/BreakpointResolvedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointResolvedEvent.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Debugger/BreakpointResolvedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointResolvedEvent.cs
index c7092cc..9febbb7 100644
--- a/source/ChromeDevTools/Protocol/Debugger/BreakpointResolvedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/BreakpointResolvedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Fired when breakpoint is resolved to an actual script and location.
 	/// </summary>
 	[Event(ProtocolName.Debugger.BreakpointResolved)]
+	[SupportedBy("iOS")]
 	public class BreakpointResolvedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/CSPViolationPauseReason.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/CSPViolationPauseReason.cs
new file mode 100644
index 0000000..18ba213
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/CSPViolationPauseReason.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// The pause reason auxiliary data when paused because of a Content Security Policy directive.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CSPViolationPauseReason
+	{
+		/// <summary>
+		/// Gets or sets The CSP directive that blocked script execution.
+		/// </summary>
+		public string Directive { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/CallFrame.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/CallFrame.cs
new file mode 100644
index 0000000..f260ffc
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/CallFrame.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// JavaScript call frame. Array of call frames form the call stack.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CallFrame
+	{
+		/// <summary>
+		/// Gets or sets Call frame identifier. This identifier is only valid while the virtual machine is paused.
+		/// </summary>
+		public string CallFrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Name of the JavaScript function called on this call frame.
+		/// </summary>
+		public string FunctionName { get; set; }
+		/// <summary>
+		/// Gets or sets Location in the source code.
+		/// </summary>
+		public Location Location { get; set; }
+		/// <summary>
+		/// Gets or sets Scope chain for this call frame.
+		/// </summary>
+		public Scope[] ScopeChain { get; set; }
+		/// <summary>
+		/// Gets or sets <code>this</code> object for this call frame.
+		/// </summary>
+		public Runtime.RemoteObject This { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs
new file mode 100644
index 0000000..d135d9c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Continues execution until specific location is reached.
+	/// </summary>
+	[Command(ProtocolName.Debugger.ContinueToLocation)]
+	[SupportedBy("iOS")]
+	public class ContinueToLocationCommand
+	{
+		/// <summary>
+		/// Gets or sets Location to continue to.
+		/// </summary>
+		public Location Location { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/ContinueToLocationCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Debugger/ContinueToLocationCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommandResponse.cs
index f63312f..ce1f7e5 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ContinueToLocationCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ContinueToLocationCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Continues execution until specific location is reached.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.ContinueToLocation)]
+	[SupportedBy("iOS")]
 	public class ContinueToLocationCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/DidSampleProbeEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/DidSampleProbeEvent.cs
new file mode 100644
index 0000000..b9885ed
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/DidSampleProbeEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Fires when a new probe sample is collected.
+	/// </summary>
+	[Event(ProtocolName.Debugger.DidSampleProbe)]
+	[SupportedBy("iOS")]
+	public class DidSampleProbeEvent
+	{
+		/// <summary>
+		/// Gets or sets A collected probe sample.
+		/// </summary>
+		public ProbeSample Sample { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs
index eaa3377..b72b5ba 100644
--- a/source/ChromeDevTools/Protocol/Debugger/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Disables debugger for given page.
 	/// </summary>
 	[Command(ProtocolName.Debugger.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Debugger/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommandResponse.cs
index 34bd196..e219bb0 100644
--- a/source/ChromeDevTools/Protocol/Debugger/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Disables debugger for given page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Debugger/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs
index 659a713..c90bd38 100644
--- a/source/ChromeDevTools/Protocol/Debugger/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
 	/// </summary>
 	[Command(ProtocolName.Debugger.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommandResponse.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommandResponse.cs
index 3ef5dcf..5054b73 100644
--- a/source/ChromeDevTools/Protocol/Debugger/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs
new file mode 100644
index 0000000..789f71c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommand.cs
@@ -0,0 +1,47 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Evaluates expression on a given call frame.
+	/// </summary>
+	[Command(ProtocolName.Debugger.EvaluateOnCallFrame)]
+	[SupportedBy("iOS")]
+	public class EvaluateOnCallFrameCommand
+	{
+		/// <summary>
+		/// Gets or sets Call frame identifier to evaluate on.
+		/// </summary>
+		public string CallFrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Expression to evaluate.
+		/// </summary>
+		public string Expression { get; set; }
+		/// <summary>
+		/// Gets or sets String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>).
+		/// </summary>
+		public string ObjectGroup { get; set; }
+		/// <summary>
+		/// Gets or sets Specifies whether command line API should be available to the evaluated expression, defaults to false.
+		/// </summary>
+		public bool IncludeCommandLineAPI { get; set; }
+		/// <summary>
+		/// Gets or sets Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.
+		/// </summary>
+		public bool DoNotPauseOnExceptionsAndMuteConsole { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the result is expected to be a JSON object that should be sent by value.
+		/// </summary>
+		public bool ReturnByValue { get; set; }
+		/// <summary>
+		/// Gets or sets Whether preview should be generated for the result.
+		/// </summary>
+		public bool GeneratePreview { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the resulting value should be considered for saving in the $n history.
+		/// </summary>
+		public bool SaveResult { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommandResponse.cs
new file mode 100644
index 0000000..4e212d8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/EvaluateOnCallFrameCommandResponse.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Evaluates expression on a given call frame.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.EvaluateOnCallFrame)]
+	[SupportedBy("iOS")]
+	public class EvaluateOnCallFrameCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Object wrapper for the evaluation result.
+		/// </summary>
+		public Runtime.RemoteObject Result { get; set; }
+		/// <summary>
+		/// Gets or sets True if the result was thrown during the evaluation.
+		/// </summary>
+		public bool WasThrown { get; set; }
+		/// <summary>
+		/// Gets or sets If the result was saved, this is the $n index that can be used to access the value.
+		/// </summary>
+		public long SavedResultIndex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/FunctionDetails.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/FunctionDetails.cs
new file mode 100644
index 0000000..ad8a3ec
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/FunctionDetails.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Information about the function.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class FunctionDetails
+	{
+		/// <summary>
+		/// Gets or sets Location of the function.
+		/// </summary>
+		public Location Location { get; set; }
+		/// <summary>
+		/// Gets or sets Name of the function. Not present for anonymous functions.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Display name of the function(specified in 'displayName' property on the function object).
+		/// </summary>
+		public string DisplayName { get; set; }
+		/// <summary>
+		/// Gets or sets Name of the function inferred from its initial assignment.
+		/// </summary>
+		public string InferredName { get; set; }
+		/// <summary>
+		/// Gets or sets Scope chain for this closure.
+		/// </summary>
+		public Scope[] ScopeChain { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs
new file mode 100644
index 0000000..bbc37f7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Returns detailed information on given function.
+	/// </summary>
+	[Command(ProtocolName.Debugger.GetFunctionDetails)]
+	[SupportedBy("iOS")]
+	public class GetFunctionDetailsCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the function to get location for.
+		/// </summary>
+		public string FunctionId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetFunctionDetailsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Debugger/GetFunctionDetailsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommandResponse.cs
index e22a678..2848400 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetFunctionDetailsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GetFunctionDetailsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Returns detailed information on given function.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetFunctionDetails)]
+	[SupportedBy("iOS")]
 	public class GetFunctionDetailsCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetScriptSourceCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/GetScriptSourceCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs
index 5597c60..ec5de50 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetScriptSourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Returns source for the script with given id.
 	/// </summary>
 	[Command(ProtocolName.Debugger.GetScriptSource)]
+	[SupportedBy("iOS")]
 	public class GetScriptSourceCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GetScriptSourceCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/GetScriptSourceCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommandResponse.cs
index ef119b0..7359f77 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GetScriptSourceCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GetScriptSourceCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Returns source for the script with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.GetScriptSource)]
+	[SupportedBy("iOS")]
 	public class GetScriptSourceCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/GlobalObjectClearedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/GlobalObjectClearedEvent.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Debugger/GlobalObjectClearedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/GlobalObjectClearedEvent.cs
index 99e5d92..be1388c 100644
--- a/source/ChromeDevTools/Protocol/Debugger/GlobalObjectClearedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/GlobalObjectClearedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload.
 	/// </summary>
 	[Event(ProtocolName.Debugger.GlobalObjectCleared)]
+	[SupportedBy("iOS")]
 	public class GlobalObjectClearedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/Location.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/Location.cs
new file mode 100644
index 0000000..8399266
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/Location.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Location in the source code.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Location
+	{
+		/// <summary>
+		/// Gets or sets Script identifier as reported in the <code>Debugger.scriptParsed</code>.
+		/// </summary>
+		public string ScriptId { get; set; }
+		/// <summary>
+		/// Gets or sets Line number in the script.
+		/// </summary>
+		public long LineNumber { get; set; }
+		/// <summary>
+		/// Gets or sets Column number in the script.
+		/// </summary>
+		public long ColumnNumber { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/PauseCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/PauseCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs
index 3d2db48..8002235 100644
--- a/source/ChromeDevTools/Protocol/Debugger/PauseCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Stops on the next JavaScript statement.
 	/// </summary>
 	[Command(ProtocolName.Debugger.Pause)]
+	[SupportedBy("iOS")]
 	public class PauseCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/PauseCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Debugger/PauseCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommandResponse.cs
index 4937ec8..42f1c85 100644
--- a/source/ChromeDevTools/Protocol/Debugger/PauseCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/PauseCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Stops on the next JavaScript statement.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.Pause)]
+	[SupportedBy("iOS")]
 	public class PauseCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/PausedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/PausedEvent.cs
new file mode 100644
index 0000000..0b9b9e0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/PausedEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
+	/// </summary>
+	[Event(ProtocolName.Debugger.Paused)]
+	[SupportedBy("iOS")]
+	public class PausedEvent
+	{
+		/// <summary>
+		/// Gets or sets Call stack the virtual machine stopped on.
+		/// </summary>
+		public CallFrame[] CallFrames { get; set; }
+		/// <summary>
+		/// Gets or sets Pause reason.
+		/// </summary>
+		public string Reason { get; set; }
+		/// <summary>
+		/// Gets or sets Object containing break-specific auxiliary properties.
+		/// </summary>
+		public object Data { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/PlayBreakpointActionSoundEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/PlayBreakpointActionSoundEvent.cs
new file mode 100644
index 0000000..e7824b7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/PlayBreakpointActionSoundEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Fired when a "sound" breakpoint action is triggered on a breakpoint.
+	/// </summary>
+	[Event(ProtocolName.Debugger.PlayBreakpointActionSound)]
+	[SupportedBy("iOS")]
+	public class PlayBreakpointActionSoundEvent
+	{
+		/// <summary>
+		/// Gets or sets Breakpoint action identifier.
+		/// </summary>
+		public long BreakpointActionId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/ProbeSample.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ProbeSample.cs
new file mode 100644
index 0000000..bd65424
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ProbeSample.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// A sample collected by evaluating a probe breakpoint action.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ProbeSample
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the probe breakpoint action that created the sample.
+		/// </summary>
+		public long ProbeId { get; set; }
+		/// <summary>
+		/// Gets or sets Unique identifier for this sample.
+		/// </summary>
+		public long SampleId { get; set; }
+		/// <summary>
+		/// Gets or sets A batch identifier which is the same for all samples taken at the same breakpoint hit.
+		/// </summary>
+		public long BatchId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp of when the sample was taken.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets Contents of the sample.
+		/// </summary>
+		public Runtime.RemoteObject Payload { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/RemoveBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Debugger/RemoveBreakpointCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs
index e0232fc..0816ad4 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RemoveBreakpointCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Removes JavaScript breakpoint.
 	/// </summary>
 	[Command(ProtocolName.Debugger.RemoveBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveBreakpointCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/RemoveBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Debugger/RemoveBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommandResponse.cs
index 9512aae..61afec3 100644
--- a/source/ChromeDevTools/Protocol/Debugger/RemoveBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/RemoveBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Removes JavaScript breakpoint.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.RemoveBreakpoint)]
+	[SupportedBy("iOS")]
 	public class RemoveBreakpointCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/ResumeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Debugger/ResumeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs
index c373b49..dc1878b 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ResumeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Resumes JavaScript execution.
 	/// </summary>
 	[Command(ProtocolName.Debugger.Resume)]
+	[SupportedBy("iOS")]
 	public class ResumeCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/ResumeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/ResumeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommandResponse.cs
index 00c19cf..065b4bf 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ResumeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Resumes JavaScript execution.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.Resume)]
+	[SupportedBy("iOS")]
 	public class ResumeCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/ResumedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumedEvent.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Debugger/ResumedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/ResumedEvent.cs
index d7ccc63..daad919 100644
--- a/source/ChromeDevTools/Protocol/Debugger/ResumedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ResumedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Fired when the virtual machine resumed execution.
 	/// </summary>
 	[Event(ProtocolName.Debugger.Resumed)]
+	[SupportedBy("iOS")]
 	public class ResumedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/Scope.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/Scope.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Debugger/Scope.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/Scope.cs
index 6da870f..7e7970f 100644
--- a/source/ChromeDevTools/Protocol/Debugger/Scope.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/Scope.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Scope description.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Scope
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/ScriptFailedToParseEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ScriptFailedToParseEvent.cs
new file mode 100644
index 0000000..a1eaa9e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ScriptFailedToParseEvent.cs
@@ -0,0 +1,33 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Fired when virtual machine fails to parse the script.
+	/// </summary>
+	[Event(ProtocolName.Debugger.ScriptFailedToParse)]
+	[SupportedBy("iOS")]
+	public class ScriptFailedToParseEvent
+	{
+		/// <summary>
+		/// Gets or sets URL of the script that failed to parse.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Source text of the script that failed to parse.
+		/// </summary>
+		public string ScriptSource { get; set; }
+		/// <summary>
+		/// Gets or sets Line offset of the script within the resource.
+		/// </summary>
+		public long StartLine { get; set; }
+		/// <summary>
+		/// Gets or sets Line with error.
+		/// </summary>
+		public long ErrorLine { get; set; }
+		/// <summary>
+		/// Gets or sets Parse error message.
+		/// </summary>
+		public string ErrorMessage { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/ScriptParsedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/ScriptParsedEvent.cs
new file mode 100644
index 0000000..8bedd5e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/ScriptParsedEvent.cs
@@ -0,0 +1,49 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
+	/// </summary>
+	[Event(ProtocolName.Debugger.ScriptParsed)]
+	[SupportedBy("iOS")]
+	public class ScriptParsedEvent
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the script parsed.
+		/// </summary>
+		public string ScriptId { get; set; }
+		/// <summary>
+		/// Gets or sets URL or name of the script parsed (if any).
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Line offset of the script within the resource with given URL (for script tags).
+		/// </summary>
+		public long StartLine { get; set; }
+		/// <summary>
+		/// Gets or sets Column offset of the script within the resource with given URL.
+		/// </summary>
+		public long StartColumn { get; set; }
+		/// <summary>
+		/// Gets or sets Last line of the script.
+		/// </summary>
+		public long EndLine { get; set; }
+		/// <summary>
+		/// Gets or sets Length of the last line of the script.
+		/// </summary>
+		public long EndColumn { get; set; }
+		/// <summary>
+		/// Gets or sets Determines whether this script is a user extension script.
+		/// </summary>
+		public bool IsContentScript { get; set; }
+		/// <summary>
+		/// Gets or sets URL of source map associated with script (if any).
+		/// </summary>
+		public string SourceMapURL { get; set; }
+		/// <summary>
+		/// Gets or sets True, if this script has sourceURL.
+		/// </summary>
+		public bool HasSourceURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SearchInContentCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Debugger/SearchInContentCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs
index 2ee1cd1..68a5b62 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SearchInContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Searches for given string in script content.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SearchInContent)]
+	[SupportedBy("iOS")]
 	public class SearchInContentCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommandResponse.cs
new file mode 100644
index 0000000..f00b988
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SearchInContentCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Searches for given string in script content.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.SearchInContent)]
+	[SupportedBy("iOS")]
+	public class SearchInContentCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets List of search matches.
+		/// </summary>
+		public GenericTypes.SearchMatch[] Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs
new file mode 100644
index 0000000..1d52ebd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommand.cs
@@ -0,0 +1,35 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads.
+	/// </summary>
+	[Command(ProtocolName.Debugger.SetBreakpointByUrl)]
+	[SupportedBy("iOS")]
+	public class SetBreakpointByUrlCommand
+	{
+		/// <summary>
+		/// Gets or sets Line number to set breakpoint at.
+		/// </summary>
+		public long LineNumber { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the resources to set breakpoint on.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified.
+		/// </summary>
+		public string UrlRegex { get; set; }
+		/// <summary>
+		/// Gets or sets Offset in the line to set breakpoint at.
+		/// </summary>
+		public long ColumnNumber { get; set; }
+		/// <summary>
+		/// Gets or sets Options to apply to this breakpoint to modify its behavior.
+		/// </summary>
+		public BreakpointOptions Options { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointByUrlCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommandResponse.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Debugger/SetBreakpointByUrlCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommandResponse.cs
index 00e6a5a..0b34718 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointByUrlCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointByUrlCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetBreakpointByUrl)]
+	[SupportedBy("iOS")]
 	public class SetBreakpointByUrlCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs
new file mode 100644
index 0000000..9f86b65
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Sets JavaScript breakpoint at a given location.
+	/// </summary>
+	[Command(ProtocolName.Debugger.SetBreakpoint)]
+	[SupportedBy("iOS")]
+	public class SetBreakpointCommand
+	{
+		/// <summary>
+		/// Gets or sets Location to set breakpoint in.
+		/// </summary>
+		public Location Location { get; set; }
+		/// <summary>
+		/// Gets or sets Options to apply to this breakpoint to modify its behavior.
+		/// </summary>
+		public BreakpointOptions Options { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Debugger/SetBreakpointCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommandResponse.cs
index cb77c8a..bbd36d0 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Sets JavaScript breakpoint at a given location.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetBreakpoint)]
+	[SupportedBy("iOS")]
 	public class SetBreakpointCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointsActiveCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/SetBreakpointsActiveCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs
index ff8d361..5c214e5 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointsActiveCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Activates / deactivates all breakpoints on the page.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetBreakpointsActive)]
+	[SupportedBy("iOS")]
 	public class SetBreakpointsActiveCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointsActiveCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Debugger/SetBreakpointsActiveCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommandResponse.cs
index a091e60..ffba3ac 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetBreakpointsActiveCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetBreakpointsActiveCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Activates / deactivates all breakpoints on the page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetBreakpointsActive)]
+	[SupportedBy("iOS")]
 	public class SetBreakpointsActiveCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs
new file mode 100644
index 0000000..1af8f0c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Sets overlay message.
+	/// </summary>
+	[Command(ProtocolName.Debugger.SetOverlayMessage)]
+	[SupportedBy("iOS")]
+	public class SetOverlayMessageCommand
+	{
+		/// <summary>
+		/// Gets or sets Overlay message to display when paused in debugger.
+		/// </summary>
+		public string Message { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommandResponse.cs
new file mode 100644
index 0000000..b64cc21
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetOverlayMessageCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
+{
+	/// <summary>
+	/// Sets overlay message.
+	/// </summary>
+	[CommandResponse(ProtocolName.Debugger.SetOverlayMessage)]
+	[SupportedBy("iOS")]
+	public class SetOverlayMessageCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetPauseOnExceptionsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Debugger/SetPauseOnExceptionsCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs
index 13c1ed2..db5ca39 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetPauseOnExceptionsCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.
 	/// </summary>
 	[Command(ProtocolName.Debugger.SetPauseOnExceptions)]
+	[SupportedBy("iOS")]
 	public class SetPauseOnExceptionsCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Debugger/SetPauseOnExceptionsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommandResponse.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Debugger/SetPauseOnExceptionsCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommandResponse.cs
index af1269c..918aa61 100644
--- a/source/ChromeDevTools/Protocol/Debugger/SetPauseOnExceptionsCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/SetPauseOnExceptionsCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.SetPauseOnExceptions)]
+	[SupportedBy("iOS")]
 	public class SetPauseOnExceptionsCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepIntoCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/StepIntoCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs
index f5a5582..0968ee5 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepIntoCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Steps into the function call.
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepInto)]
+	[SupportedBy("iOS")]
 	public class StepIntoCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepIntoCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Debugger/StepIntoCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommandResponse.cs
index c2a6100..574f141 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepIntoCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepIntoCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Steps into the function call.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.StepInto)]
+	[SupportedBy("iOS")]
 	public class StepIntoCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepOutCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/StepOutCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs
index 6731a75..0f56703 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepOutCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Steps out of the function call.
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepOut)]
+	[SupportedBy("iOS")]
 	public class StepOutCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepOutCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Debugger/StepOutCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommandResponse.cs
index 43b6d53..9d7f106 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepOutCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOutCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Steps out of the function call.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.StepOut)]
+	[SupportedBy("iOS")]
 	public class StepOutCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepOverCommand.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Debugger/StepOverCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs
index b88c18e..98847bb 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepOverCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Steps over the statement.
 	/// </summary>
 	[Command(ProtocolName.Debugger.StepOver)]
+	[SupportedBy("iOS")]
 	public class StepOverCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Debugger/StepOverCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Debugger/StepOverCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommandResponse.cs
index 218d623..938fed8 100644
--- a/source/ChromeDevTools/Protocol/Debugger/StepOverCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Debugger/StepOverCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Debugger
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Debugger
 {
 	/// <summary>
 	/// Steps over the statement.
 	/// </summary>
 	[CommandResponse(ProtocolName.Debugger.StepOver)]
+	[SupportedBy("iOS")]
 	public class StepOverCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/GenericTypes/SearchMatch.cs b/source/ChromeDevTools/Protocol/iOS/GenericTypes/SearchMatch.cs
new file mode 100644
index 0000000..881d1e5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/GenericTypes/SearchMatch.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.GenericTypes
+{
+	/// <summary>
+	/// Search match in a resource.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class SearchMatch
+	{
+		/// <summary>
+		/// Gets or sets Line number in resource content.
+		/// </summary>
+		public double LineNumber { get; set; }
+		/// <summary>
+		/// Gets or sets Line with match content.
+		/// </summary>
+		public string LineContent { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/ClearObjectStoreCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/IndexedDB/ClearObjectStoreCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs
index 2b1941e..6f26cbb 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/ClearObjectStoreCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Clears all entries from an object store.
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.ClearObjectStore)]
+	[SupportedBy("iOS")]
 	public class ClearObjectStoreCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/ClearObjectStoreCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/IndexedDB/ClearObjectStoreCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommandResponse.cs
index c411115..38acf51 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/ClearObjectStoreCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ClearObjectStoreCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Clears all entries from an object store.
 	/// </summary>
 	[CommandResponse(ProtocolName.IndexedDB.ClearObjectStore)]
+	[SupportedBy("iOS")]
 	public class ClearObjectStoreCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/DataEntry.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DataEntry.cs
new file mode 100644
index 0000000..e241fd7
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DataEntry.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
+{
+	/// <summary>
+	/// Data entry.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class DataEntry
+	{
+		/// <summary>
+		/// Gets or sets Key.
+		/// </summary>
+		public Runtime.RemoteObject Key { get; set; }
+		/// <summary>
+		/// Gets or sets Primary key.
+		/// </summary>
+		public Runtime.RemoteObject PrimaryKey { get; set; }
+		/// <summary>
+		/// Gets or sets Value.
+		/// </summary>
+		public Runtime.RemoteObject Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/IndexedDB/DatabaseWithObjectStores.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DatabaseWithObjectStores.cs
new file mode 100644
index 0000000..15620ef
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DatabaseWithObjectStores.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
+{
+	/// <summary>
+	/// Database with an array of object stores.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class DatabaseWithObjectStores
+	{
+		/// <summary>
+		/// Gets or sets Database name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Database version.
+		/// </summary>
+		public double Version { get; set; }
+		/// <summary>
+		/// Gets or sets Object stores in this database.
+		/// </summary>
+		public ObjectStore[] ObjectStores { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/IndexedDB/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs
index c2a7a14..07fdef9 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Disables events from backend.
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/IndexedDB/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommandResponse.cs
index e112aee..a0856d0 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Disables events from backend.
 	/// </summary>
 	[CommandResponse(ProtocolName.IndexedDB.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/IndexedDB/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs
index 85a2378..68095e2 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Enables events from backend.
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommandResponse.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/IndexedDB/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommandResponse.cs
index 82a8162..fe2518c 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Enables events from backend.
 	/// </summary>
 	[CommandResponse(ProtocolName.IndexedDB.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/Key.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/Key.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/IndexedDB/Key.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/Key.cs
index b6156b3..0e2a7db 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/Key.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/Key.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Key.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Key
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/KeyPath.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/KeyPath.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/IndexedDB/KeyPath.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/KeyPath.cs
index 519ba88..900c9eb 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/KeyPath.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/KeyPath.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Key path.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class KeyPath
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/KeyRange.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/KeyRange.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/IndexedDB/KeyRange.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/KeyRange.cs
index 02c5177..4b435a8 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/KeyRange.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/KeyRange.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Key range.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class KeyRange
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/ObjectStore.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ObjectStore.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/IndexedDB/ObjectStore.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/ObjectStore.cs
index 271e711..ede8e13 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/ObjectStore.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ObjectStore.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Object store.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class ObjectStore
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/ObjectStoreIndex.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ObjectStoreIndex.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/IndexedDB/ObjectStoreIndex.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/ObjectStoreIndex.cs
index dbea2d2..3af96c6 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/ObjectStoreIndex.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/ObjectStoreIndex.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Object store index.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class ObjectStoreIndex
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/RequestDataCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/IndexedDB/RequestDataCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs
index c0f4cde..d4cf41c 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/RequestDataCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Requests data from object store or index.
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestData)]
+	[SupportedBy("iOS")]
 	public class RequestDataCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/RequestDataCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/IndexedDB/RequestDataCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommandResponse.cs
index cea857a..c357c7b 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/RequestDataCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDataCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Requests data from object store or index.
 	/// </summary>
 	[CommandResponse(ProtocolName.IndexedDB.RequestData)]
+	[SupportedBy("iOS")]
 	public class RequestDataCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs
index d0ead67..9302458 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Requests database with given name in given frame.
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestDatabase)]
+	[SupportedBy("iOS")]
 	public class RequestDatabaseCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommandResponse.cs
index 89bac37..eaa2494 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Requests database with given name in given frame.
 	/// </summary>
 	[CommandResponse(ProtocolName.IndexedDB.RequestDatabase)]
+	[SupportedBy("iOS")]
 	public class RequestDatabaseCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseNamesCommand.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseNamesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs
index 4c61b41..f3a014a 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseNamesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Requests database names for given security origin.
 	/// </summary>
 	[Command(ProtocolName.IndexedDB.RequestDatabaseNames)]
+	[SupportedBy("iOS")]
 	public class RequestDatabaseNamesCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseNamesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseNamesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommandResponse.cs
index c9ca534..c407260 100644
--- a/source/ChromeDevTools/Protocol/IndexedDB/RequestDatabaseNamesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/IndexedDB/RequestDatabaseNamesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.IndexedDB
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.IndexedDB
 {
 	/// <summary>
 	/// Requests database names for given security origin.
 	/// </summary>
 	[CommandResponse(ProtocolName.IndexedDB.RequestDatabaseNames)]
+	[SupportedBy("iOS")]
 	public class RequestDatabaseNamesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/ActivateExtraDomainsEvent.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/ActivateExtraDomainsEvent.cs
new file mode 100644
index 0000000..8a02327
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/ActivateExtraDomainsEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
+{
+	/// <summary>
+	/// Fired when the backend has alternate domains that need to be activated.
+	/// </summary>
+	[Event(ProtocolName.Inspector.ActivateExtraDomains)]
+	[SupportedBy("iOS")]
+	public class ActivateExtraDomainsEvent
+	{
+		/// <summary>
+		/// Gets or sets Domain names that need activation
+		/// </summary>
+		public string[] Domains { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Inspector/DetachedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/DetachedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Inspector/DetachedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/DetachedEvent.cs
index 479b0ef..bf39fa8 100644
--- a/source/ChromeDevTools/Protocol/Inspector/DetachedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/DetachedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	/// <summary>
 	/// Fired when remote debugging connection is about to be terminated. Contains detach reason.
 	/// </summary>
 	[Event(ProtocolName.Inspector.Detached)]
+	[SupportedBy("iOS")]
 	public class DetachedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Inspector/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Inspector/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs
index 7824b4f..aed0c4b 100644
--- a/source/ChromeDevTools/Protocol/Inspector/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	/// <summary>
 	/// Disables inspector domain notifications.
 	/// </summary>
 	[Command(ProtocolName.Inspector.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Inspector/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Inspector/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommandResponse.cs
index 3e2a283..c4e456a 100644
--- a/source/ChromeDevTools/Protocol/Inspector/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	/// <summary>
 	/// Disables inspector domain notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.Inspector.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Inspector/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Inspector/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs
index e2c3138..f963705 100644
--- a/source/ChromeDevTools/Protocol/Inspector/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	/// <summary>
 	/// Enables inspector domain notifications.
 	/// </summary>
 	[Command(ProtocolName.Inspector.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Inspector/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Inspector/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommandResponse.cs
index b11f69c..5b571e3 100644
--- a/source/ChromeDevTools/Protocol/Inspector/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	/// <summary>
 	/// Enables inspector domain notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.Inspector.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/EvaluateForTestInFrontendEvent.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/EvaluateForTestInFrontendEvent.cs
new file mode 100644
index 0000000..efd65d5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/EvaluateForTestInFrontendEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
+{
+	[Event(ProtocolName.Inspector.EvaluateForTestInFrontend)]
+	[SupportedBy("iOS")]
+	public class EvaluateForTestInFrontendEvent
+	{
+		/// <summary>
+		/// Gets or sets Script
+		/// </summary>
+		public string Script { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs
new file mode 100644
index 0000000..c2bb16f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
+{
+	/// <summary>
+	/// Sent by the frontend after all initialization messages have been sent.
+	/// </summary>
+	[Command(ProtocolName.Inspector.Initialized)]
+	[SupportedBy("iOS")]
+	public class InitializedCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommandResponse.cs
new file mode 100644
index 0000000..7c5f50b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/InitializedCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
+{
+	/// <summary>
+	/// Sent by the frontend after all initialization messages have been sent.
+	/// </summary>
+	[CommandResponse(ProtocolName.Inspector.Initialized)]
+	[SupportedBy("iOS")]
+	public class InitializedCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Inspector/InspectEvent.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/InspectEvent.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Inspector/InspectEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/InspectEvent.cs
index 735e579..d31bf66 100644
--- a/source/ChromeDevTools/Protocol/Inspector/InspectEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/InspectEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	[Event(ProtocolName.Inspector.Inspect)]
+	[SupportedBy("iOS")]
 	public class InspectEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Inspector/TargetCrashedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Inspector/TargetCrashedEvent.cs
similarity index 71%
rename from source/ChromeDevTools/Protocol/Inspector/TargetCrashedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Inspector/TargetCrashedEvent.cs
index 304d8db..614a54a 100644
--- a/source/ChromeDevTools/Protocol/Inspector/TargetCrashedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Inspector/TargetCrashedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Inspector
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Inspector
 {
 	/// <summary>
 	/// Fired when debugging target has crashed
 	/// </summary>
 	[Event(ProtocolName.Inspector.TargetCrashed)]
+	[SupportedBy("iOS")]
 	public class TargetCrashedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/CompositingReasons.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/CompositingReasons.cs
new file mode 100644
index 0000000..69b08eb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/CompositingReasons.cs
@@ -0,0 +1,122 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// An object containing the reasons why the layer was composited as properties.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CompositingReasons
+	{
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a CSS 3D transform.
+		/// </summary>
+		public bool Transform3D { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with a <video> element.
+		/// </summary>
+		public bool Video { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to the element being a <canvas> element.
+		/// </summary>
+		public bool Canvas { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with a plugin.
+		/// </summary>
+		public bool Plugin { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an <iframe> element.
+		/// </summary>
+		public bool IFrame { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "backface-visibility: hidden" style.
+		/// </summary>
+		public bool BackfaceVisibilityHidden { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element clipping compositing descendants.
+		/// </summary>
+		public bool ClipsCompositingDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an animated element.
+		/// </summary>
+		public bool Animation { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with CSS filters applied.
+		/// </summary>
+		public bool Filters { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "position: fixed" style.
+		/// </summary>
+		public bool PositionFixed { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "position: sticky" style.
+		/// </summary>
+		public bool PositionSticky { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "overflow-scrolling: touch" style.
+		/// </summary>
+		public bool OverflowScrollingTouch { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element establishing a stacking context.
+		/// </summary>
+		public bool Stacking { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element overlapping other composited elements.
+		/// </summary>
+		public bool Overlap { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with descendants that have a negative z-index.
+		/// </summary>
+		public bool NegativeZIndexChildren { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with composited descendants.
+		/// </summary>
+		public bool TransformWithCompositedDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with opacity applied and composited descendants.
+		/// </summary>
+		public bool OpacityWithCompositedDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with a masked element and composited descendants.
+		/// </summary>
+		public bool MaskWithCompositedDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a reflection and composited descendants.
+		/// </summary>
+		public bool ReflectionWithCompositedDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with CSS filters applied and composited descendants.
+		/// </summary>
+		public bool FilterWithCompositedDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with CSS blending applied and composited descendants.
+		/// </summary>
+		public bool BlendingWithCompositedDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element isolating compositing descendants having CSS blending applied.
+		/// </summary>
+		public bool IsolatesCompositedBlendingDescendants { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with perspective applied.
+		/// </summary>
+		public bool Perspective { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "transform-style: preserve-3d" style.
+		/// </summary>
+		public bool Preserve3D { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "will-change" style.
+		/// </summary>
+		public bool WillChange { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with the root element.
+		/// </summary>
+		public bool Root { get; set; }
+		/// <summary>
+		/// Gets or sets Composition due to association with an element with a "blend-mode" style.
+		/// </summary>
+		public bool Blending { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/LayerTree/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs
index 7034e8e..b57d2dd 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 {
 	/// <summary>
 	/// Disables compositing tree inspection.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/LayerTree/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommandResponse.cs
index b015123..ca01f99 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 {
 	/// <summary>
 	/// Disables compositing tree inspection.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/LayerTree/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs
index fe52231..e506c8d 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 {
 	/// <summary>
 	/// Enables compositing tree inspection.
 	/// </summary>
 	[Command(ProtocolName.LayerTree.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/LayerTree/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/LayerTree/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommandResponse.cs
index 3c057f6..8cca24e 100644
--- a/source/ChromeDevTools/Protocol/LayerTree/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.LayerTree
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
 {
 	/// <summary>
 	/// Enables compositing tree inspection.
 	/// </summary>
 	[CommandResponse(ProtocolName.LayerTree.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/IntRect.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/IntRect.cs
new file mode 100644
index 0000000..c9f6be2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/IntRect.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// A rectangle.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class IntRect
+	{
+		/// <summary>
+		/// Gets or sets The x position.
+		/// </summary>
+		public long X { get; set; }
+		/// <summary>
+		/// Gets or sets The y position.
+		/// </summary>
+		public long Y { get; set; }
+		/// <summary>
+		/// Gets or sets The width metric.
+		/// </summary>
+		public long Width { get; set; }
+		/// <summary>
+		/// Gets or sets The height metric.
+		/// </summary>
+		public long Height { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/Layer.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/Layer.cs
new file mode 100644
index 0000000..757f961
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/Layer.cs
@@ -0,0 +1,62 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// Information about a compositing layer.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Layer
+	{
+		/// <summary>
+		/// Gets or sets The unique id for this layer.
+		/// </summary>
+		public string LayerId { get; set; }
+		/// <summary>
+		/// Gets or sets The id for the node associated with this layer.
+		/// </summary>
+		public long NodeId { get; set; }
+		/// <summary>
+		/// Gets or sets Bounds of the layer in absolute page coordinates.
+		/// </summary>
+		public IntRect Bounds { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates how many time this layer has painted.
+		/// </summary>
+		public long PaintCount { get; set; }
+		/// <summary>
+		/// Gets or sets Estimated memory used by this layer.
+		/// </summary>
+		public long Memory { get; set; }
+		/// <summary>
+		/// Gets or sets The bounds of the composited layer.
+		/// </summary>
+		public IntRect CompositedBounds { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether this layer is associated with an element hosted in a shadow tree.
+		/// </summary>
+		public bool IsInShadowTree { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether this layer was used to provide a reflection for the element.
+		/// </summary>
+		public bool IsReflection { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether the layer is attached to a pseudo element that is CSS generated content.
+		/// </summary>
+		public bool IsGeneratedContent { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates whether the layer was created for a CSS anonymous block or box.
+		/// </summary>
+		public bool IsAnonymous { get; set; }
+		/// <summary>
+		/// Gets or sets The id for the pseudo element associated with this layer.
+		/// </summary>
+		public string PseudoElementId { get; set; }
+		/// <summary>
+		/// Gets or sets The name of the CSS pseudo-element that prompted the layer to be generated.
+		/// </summary>
+		public string PseudoElement { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/LayerTreeDidChangeEvent.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayerTreeDidChangeEvent.cs
new file mode 100644
index 0000000..5619557
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayerTreeDidChangeEvent.cs
@@ -0,0 +1,10 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	[Event(ProtocolName.LayerTree.LayerTreeDidChange)]
+	[SupportedBy("iOS")]
+	public class LayerTreeDidChangeEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs
new file mode 100644
index 0000000..250e4f3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// Returns the layer tree structure of the current page.
+	/// </summary>
+	[Command(ProtocolName.LayerTree.LayersForNode)]
+	[SupportedBy("iOS")]
+	public class LayersForNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets Root of the subtree for which we want to gather layers.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommandResponse.cs
new file mode 100644
index 0000000..bfcb625
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/LayersForNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// Returns the layer tree structure of the current page.
+	/// </summary>
+	[CommandResponse(ProtocolName.LayerTree.LayersForNode)]
+	[SupportedBy("iOS")]
+	public class LayersForNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Child layers.
+		/// </summary>
+		public Layer[] Layers { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs
new file mode 100644
index 0000000..b3b9ed0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// Provides the reasons why the given layer was composited.
+	/// </summary>
+	[Command(ProtocolName.LayerTree.ReasonsForCompositingLayer)]
+	[SupportedBy("iOS")]
+	public class ReasonsForCompositingLayerCommand
+	{
+		/// <summary>
+		/// Gets or sets The id of the layer for which we want to get the reasons it was composited.
+		/// </summary>
+		public string LayerId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommandResponse.cs
new file mode 100644
index 0000000..31d760d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/LayerTree/ReasonsForCompositingLayerCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.LayerTree
+{
+	/// <summary>
+	/// Provides the reasons why the given layer was composited.
+	/// </summary>
+	[CommandResponse(ProtocolName.LayerTree.ReasonsForCompositingLayer)]
+	[SupportedBy("iOS")]
+	public class ReasonsForCompositingLayerCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets An object containing the reasons why the layer was composited as properties.
+		/// </summary>
+		public CompositingReasons CompositingReasons { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/CachedResource.cs b/source/ChromeDevTools/Protocol/iOS/Network/CachedResource.cs
new file mode 100644
index 0000000..afb10c8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CachedResource.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Information about the cached resource.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CachedResource
+	{
+		/// <summary>
+		/// Gets or sets Resource URL. This is the url of the original network request.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Type of this resource.
+		/// </summary>
+		public Page.ResourceType Type { get; set; }
+		/// <summary>
+		/// Gets or sets Cached response data.
+		/// </summary>
+		public Response Response { get; set; }
+		/// <summary>
+		/// Gets or sets Cached response body size.
+		/// </summary>
+		public double BodySize { get; set; }
+		/// <summary>
+		/// Gets or sets URL of source map associated with this resource (if any).
+		/// </summary>
+		public string SourceMapURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Network/CanClearBrowserCacheCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs
index 58568ea..51166bd 100644
--- a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Tells whether clearing browser cache is supported.
 	/// </summary>
 	[Command(ProtocolName.Network.CanClearBrowserCache)]
+	[SupportedBy("iOS")]
 	public class CanClearBrowserCacheCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCacheCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/CanClearBrowserCacheCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommandResponse.cs
index 5fee308..2140ba0 100644
--- a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCacheCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCacheCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Tells whether clearing browser cache is supported.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.CanClearBrowserCache)]
+	[SupportedBy("iOS")]
 	public class CanClearBrowserCacheCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Network/CanClearBrowserCookiesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs
index 75487fb..76a3889 100644
--- a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Tells whether clearing browser cookies is supported.
 	/// </summary>
 	[Command(ProtocolName.Network.CanClearBrowserCookies)]
+	[SupportedBy("iOS")]
 	public class CanClearBrowserCookiesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/CanClearBrowserCookiesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommandResponse.cs
index 23739e9..ed98407 100644
--- a/source/ChromeDevTools/Protocol/Network/CanClearBrowserCookiesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/CanClearBrowserCookiesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Tells whether clearing browser cookies is supported.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.CanClearBrowserCookies)]
+	[SupportedBy("iOS")]
 	public class CanClearBrowserCookiesCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/ClearBrowserCacheCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Network/ClearBrowserCacheCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs
index eca1c9d..2485481 100644
--- a/source/ChromeDevTools/Protocol/Network/ClearBrowserCacheCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Clears browser cache.
 	/// </summary>
 	[Command(ProtocolName.Network.ClearBrowserCache)]
+	[SupportedBy("iOS")]
 	public class ClearBrowserCacheCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/ClearBrowserCacheCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Network/ClearBrowserCacheCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommandResponse.cs
index 9dc76c9..1651fe9 100644
--- a/source/ChromeDevTools/Protocol/Network/ClearBrowserCacheCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCacheCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Clears browser cache.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.ClearBrowserCache)]
+	[SupportedBy("iOS")]
 	public class ClearBrowserCacheCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/ClearBrowserCookiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Network/ClearBrowserCookiesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs
index c63a40e..2037df2 100644
--- a/source/ChromeDevTools/Protocol/Network/ClearBrowserCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Clears browser cookies.
 	/// </summary>
 	[Command(ProtocolName.Network.ClearBrowserCookies)]
+	[SupportedBy("iOS")]
 	public class ClearBrowserCookiesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/ClearBrowserCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Network/ClearBrowserCookiesCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommandResponse.cs
index 303dacb..e510c5e 100644
--- a/source/ChromeDevTools/Protocol/Network/ClearBrowserCookiesCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ClearBrowserCookiesCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Clears browser cookies.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.ClearBrowserCookies)]
+	[SupportedBy("iOS")]
 	public class ClearBrowserCookiesCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/DataReceivedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/DataReceivedEvent.cs
similarity index 90%
rename from source/ChromeDevTools/Protocol/Network/DataReceivedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/DataReceivedEvent.cs
index 0b10a1e..12e79e1 100644
--- a/source/ChromeDevTools/Protocol/Network/DataReceivedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/DataReceivedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when data chunk was received over the network.
 	/// </summary>
 	[Event(ProtocolName.Network.DataReceived)]
+	[SupportedBy("iOS")]
 	public class DataReceivedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Network/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs
index ad09643..c5bc71e 100644
--- a/source/ChromeDevTools/Protocol/Network/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Disables network tracking, prevents network events from being sent to the client.
 	/// </summary>
 	[Command(ProtocolName.Network.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/DisableCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Network/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/DisableCommandResponse.cs
index 515977f..eec5808 100644
--- a/source/ChromeDevTools/Protocol/Network/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Disables network tracking, prevents network events from being sent to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Network/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs
index c10d9a0..9c1bed6 100644
--- a/source/ChromeDevTools/Protocol/Network/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Enables network tracking, network events will now be delivered to the client.
 	/// </summary>
 	[Command(ProtocolName.Network.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/EnableCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Network/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/EnableCommandResponse.cs
index 0b63341..4eb86f4 100644
--- a/source/ChromeDevTools/Protocol/Network/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Enables network tracking, network events will now be delivered to the client.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/GetResponseBodyCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/GetResponseBodyCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs
index 0f0a913..793854c 100644
--- a/source/ChromeDevTools/Protocol/Network/GetResponseBodyCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Returns content served for the given request.
 	/// </summary>
 	[Command(ProtocolName.Network.GetResponseBody)]
+	[SupportedBy("iOS")]
 	public class GetResponseBodyCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/GetResponseBodyCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommandResponse.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Network/GetResponseBodyCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommandResponse.cs
index 865915a..6c6874e 100644
--- a/source/ChromeDevTools/Protocol/Network/GetResponseBodyCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/GetResponseBodyCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Returns content served for the given request.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.GetResponseBody)]
+	[SupportedBy("iOS")]
 	public class GetResponseBodyCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/Initiator.cs b/source/ChromeDevTools/Protocol/iOS/Network/Initiator.cs
new file mode 100644
index 0000000..07df38d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/Initiator.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Information about the request initiator.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Initiator
+	{
+		/// <summary>
+		/// Gets or sets Type of this initiator.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Initiator JavaScript stack trace, set for Script only.
+		/// </summary>
+		public Console.CallFrame[] StackTrace { get; set; }
+		/// <summary>
+		/// Gets or sets Initiator URL, set for Parser type only.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Initiator line number, set for Parser type only.
+		/// </summary>
+		public double LineNumber { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs
new file mode 100644
index 0000000..d5ba136
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Loads a resource in the context of a frame on the inspected page without cross origin checks.
+	/// </summary>
+	[Command(ProtocolName.Network.LoadResource)]
+	[SupportedBy("iOS")]
+	public class LoadResourceCommand
+	{
+		/// <summary>
+		/// Gets or sets Frame to load the resource from.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the resource to load.
+		/// </summary>
+		public string Url { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommandResponse.cs
new file mode 100644
index 0000000..a1aec18
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/LoadResourceCommandResponse.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Loads a resource in the context of a frame on the inspected page without cross origin checks.
+	/// </summary>
+	[CommandResponse(ProtocolName.Network.LoadResource)]
+	[SupportedBy("iOS")]
+	public class LoadResourceCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Resource content.
+		/// </summary>
+		public string Content { get; set; }
+		/// <summary>
+		/// Gets or sets Resource mimeType.
+		/// </summary>
+		public string MimeType { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response status code.
+		/// </summary>
+		public double Status { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/LoadingFailedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/LoadingFailedEvent.cs
new file mode 100644
index 0000000..24d3522
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/LoadingFailedEvent.cs
@@ -0,0 +1,29 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Fired when HTTP request has failed to load.
+	/// </summary>
+	[Event(ProtocolName.Network.LoadingFailed)]
+	[SupportedBy("iOS")]
+	public class LoadingFailedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets User friendly error message.
+		/// </summary>
+		public string ErrorText { get; set; }
+		/// <summary>
+		/// Gets or sets True if loading was canceled.
+		/// </summary>
+		public bool Canceled { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/LoadingFinishedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/LoadingFinishedEvent.cs
new file mode 100644
index 0000000..dde21af
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/LoadingFinishedEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Fired when HTTP request has finished loading.
+	/// </summary>
+	[Event(ProtocolName.Network.LoadingFinished)]
+	[SupportedBy("iOS")]
+	public class LoadingFinishedEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets URL of source map associated with this resource (if any).
+		/// </summary>
+		public string SourceMapURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/Request.cs b/source/ChromeDevTools/Protocol/iOS/Network/Request.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Network/Request.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/Request.cs
index 4e3c939..32ccae0 100644
--- a/source/ChromeDevTools/Protocol/Network/Request.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/Request.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// HTTP request data.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Request
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/RequestServedFromCacheEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromCacheEvent.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Network/RequestServedFromCacheEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromCacheEvent.cs
index 21a6c73..29a6652 100644
--- a/source/ChromeDevTools/Protocol/Network/RequestServedFromCacheEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromCacheEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired if request ended up loading from cache.
 	/// </summary>
 	[Event(ProtocolName.Network.RequestServedFromCache)]
+	[SupportedBy("iOS")]
 	public class RequestServedFromCacheEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromMemoryCacheEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromMemoryCacheEvent.cs
new file mode 100644
index 0000000..c7c395b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/RequestServedFromMemoryCacheEvent.cs
@@ -0,0 +1,41 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Fired when HTTP request has been served from memory cache.
+	/// </summary>
+	[Event(ProtocolName.Network.RequestServedFromMemoryCache)]
+	[SupportedBy("iOS")]
+	public class RequestServedFromMemoryCacheEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Frame identifier.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Loader identifier.
+		/// </summary>
+		public string LoaderId { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the document this request is loaded for.
+		/// </summary>
+		public string DocumentURL { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets Request initiator.
+		/// </summary>
+		public Initiator Initiator { get; set; }
+		/// <summary>
+		/// Gets or sets Cached resource data.
+		/// </summary>
+		public CachedResource Resource { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/RequestWillBeSentEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/RequestWillBeSentEvent.cs
new file mode 100644
index 0000000..92db765
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/RequestWillBeSentEvent.cs
@@ -0,0 +1,49 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Fired when page is about to send HTTP request.
+	/// </summary>
+	[Event(ProtocolName.Network.RequestWillBeSent)]
+	[SupportedBy("iOS")]
+	public class RequestWillBeSentEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Frame identifier.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Loader identifier.
+		/// </summary>
+		public string LoaderId { get; set; }
+		/// <summary>
+		/// Gets or sets URL of the document this request is loaded for.
+		/// </summary>
+		public string DocumentURL { get; set; }
+		/// <summary>
+		/// Gets or sets Request data.
+		/// </summary>
+		public Request Request { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets Request initiator.
+		/// </summary>
+		public Initiator Initiator { get; set; }
+		/// <summary>
+		/// Gets or sets Redirect response data.
+		/// </summary>
+		public Response RedirectResponse { get; set; }
+		/// <summary>
+		/// Gets or sets Resource type.
+		/// </summary>
+		public Page.ResourceType Type { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/ResourceTiming.cs b/source/ChromeDevTools/Protocol/iOS/Network/ResourceTiming.cs
new file mode 100644
index 0000000..c196c17
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ResourceTiming.cs
@@ -0,0 +1,46 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Timing information for the request.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ResourceTiming
+	{
+		/// <summary>
+		/// Gets or sets Timing's navigationStart is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this navigationStart.
+		/// </summary>
+		public double NavigationStart { get; set; }
+		/// <summary>
+		/// Gets or sets Started DNS address resolve.
+		/// </summary>
+		public double DomainLookupStart { get; set; }
+		/// <summary>
+		/// Gets or sets Finished DNS address resolve.
+		/// </summary>
+		public double DomainLookupEnd { get; set; }
+		/// <summary>
+		/// Gets or sets Started connecting to the remote host.
+		/// </summary>
+		public double ConnectStart { get; set; }
+		/// <summary>
+		/// Gets or sets Connected to the remote host.
+		/// </summary>
+		public double ConnectEnd { get; set; }
+		/// <summary>
+		/// Gets or sets Started SSL handshake.
+		/// </summary>
+		public double SecureConnectionStart { get; set; }
+		/// <summary>
+		/// Gets or sets Started sending request.
+		/// </summary>
+		public double RequestStart { get; set; }
+		/// <summary>
+		/// Gets or sets Started receiving response headers.
+		/// </summary>
+		public double ResponseStart { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/Response.cs b/source/ChromeDevTools/Protocol/iOS/Network/Response.cs
new file mode 100644
index 0000000..6396862
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/Response.cs
@@ -0,0 +1,54 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// HTTP response data.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Response
+	{
+		/// <summary>
+		/// Gets or sets Response URL. This URL can be different from CachedResource.url in case of redirect.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response status code.
+		/// </summary>
+		public double Status { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response status text.
+		/// </summary>
+		public string StatusText { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response headers.
+		/// </summary>
+		public Dictionary<string, string> Headers { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response headers text.
+		/// </summary>
+		public string HeadersText { get; set; }
+		/// <summary>
+		/// Gets or sets Resource mimeType as determined by the browser.
+		/// </summary>
+		public string MimeType { get; set; }
+		/// <summary>
+		/// Gets or sets Refined HTTP request headers that were actually transmitted over the network.
+		/// </summary>
+		public Dictionary<string, string> RequestHeaders { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP request headers text.
+		/// </summary>
+		public string RequestHeadersText { get; set; }
+		/// <summary>
+		/// Gets or sets Specifies that the request was served from the disk cache.
+		/// </summary>
+		public bool FromDiskCache { get; set; }
+		/// <summary>
+		/// Gets or sets Timing information for the given request.
+		/// </summary>
+		public ResourceTiming Timing { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/ResponseReceivedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/ResponseReceivedEvent.cs
similarity index 91%
rename from source/ChromeDevTools/Protocol/Network/ResponseReceivedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/ResponseReceivedEvent.cs
index d79533e..941df6b 100644
--- a/source/ChromeDevTools/Protocol/Network/ResponseReceivedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/ResponseReceivedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when HTTP response is available.
 	/// </summary>
 	[Event(ProtocolName.Network.ResponseReceived)]
+	[SupportedBy("iOS")]
 	public class ResponseReceivedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/SetCacheDisabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/SetCacheDisabledCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs
index 316e909..df16b70 100644
--- a/source/ChromeDevTools/Protocol/Network/SetCacheDisabledCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Toggles ignoring cache for each request. If <code>true</code>, cache will not be used.
 	/// </summary>
 	[Command(ProtocolName.Network.SetCacheDisabled)]
+	[SupportedBy("iOS")]
 	public class SetCacheDisabledCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/SetCacheDisabledCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Network/SetCacheDisabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommandResponse.cs
index c9606f6..9d1907e 100644
--- a/source/ChromeDevTools/Protocol/Network/SetCacheDisabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/SetCacheDisabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Toggles ignoring cache for each request. If <code>true</code>, cache will not be used.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.SetCacheDisabled)]
+	[SupportedBy("iOS")]
 	public class SetCacheDisabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/SetExtraHTTPHeadersCommand.cs b/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs
similarity index 85%
rename from source/ChromeDevTools/Protocol/Network/SetExtraHTTPHeadersCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs
index 859b0fb..910d057 100644
--- a/source/ChromeDevTools/Protocol/Network/SetExtraHTTPHeadersCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Specifies whether to always send extra HTTP headers with the requests from this page.
 	/// </summary>
 	[Command(ProtocolName.Network.SetExtraHTTPHeaders)]
+	[SupportedBy("iOS")]
 	public class SetExtraHTTPHeadersCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/SetExtraHTTPHeadersCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommandResponse.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Network/SetExtraHTTPHeadersCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommandResponse.cs
index a130e1e..f9d5558 100644
--- a/source/ChromeDevTools/Protocol/Network/SetExtraHTTPHeadersCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/SetExtraHTTPHeadersCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Specifies whether to always send extra HTTP headers with the requests from this page.
 	/// </summary>
 	[CommandResponse(ProtocolName.Network.SetExtraHTTPHeaders)]
+	[SupportedBy("iOS")]
 	public class SetExtraHTTPHeadersCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketClosedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketClosedEvent.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Network/WebSocketClosedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/WebSocketClosedEvent.cs
index 49455bc..43bab21 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketClosedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketClosedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when WebSocket is closed.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketClosed)]
+	[SupportedBy("iOS")]
 	public class WebSocketClosedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketCreatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketCreatedEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Network/WebSocketCreatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/WebSocketCreatedEvent.cs
index 5bf971a..9198f15 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketCreatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired upon WebSocket creation.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketCreated)]
+	[SupportedBy("iOS")]
 	public class WebSocketCreatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrame.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrame.cs
new file mode 100644
index 0000000..ed6fe1d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrame.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// WebSocket frame data.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class WebSocketFrame
+	{
+		/// <summary>
+		/// Gets or sets WebSocket frame opcode.
+		/// </summary>
+		public double Opcode { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket frame mask.
+		/// </summary>
+		public bool Mask { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket frame payload data.
+		/// </summary>
+		public string PayloadData { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketFrameErrorEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameErrorEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Network/WebSocketFrameErrorEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameErrorEvent.cs
index 0366e98..7579dcb 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketFrameErrorEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameErrorEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when WebSocket frame error occurs.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketFrameError)]
+	[SupportedBy("iOS")]
 	public class WebSocketFrameErrorEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketFrameReceivedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameReceivedEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Network/WebSocketFrameReceivedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameReceivedEvent.cs
index 69a95c0..e94fb94 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketFrameReceivedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameReceivedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when WebSocket frame is received.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketFrameReceived)]
+	[SupportedBy("iOS")]
 	public class WebSocketFrameReceivedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketFrameSentEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameSentEvent.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Network/WebSocketFrameSentEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameSentEvent.cs
index 7f8aa41..f0a45dd 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketFrameSentEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketFrameSentEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when WebSocket frame is sent.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketFrameSent)]
+	[SupportedBy("iOS")]
 	public class WebSocketFrameSentEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Network/WebSocketHandshakeResponseReceivedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketHandshakeResponseReceivedEvent.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Network/WebSocketHandshakeResponseReceivedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Network/WebSocketHandshakeResponseReceivedEvent.cs
index 65b5638..a618dbb 100644
--- a/source/ChromeDevTools/Protocol/Network/WebSocketHandshakeResponseReceivedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketHandshakeResponseReceivedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
 {
 	/// <summary>
 	/// Fired when WebSocket handshake response becomes available.
 	/// </summary>
 	[Event(ProtocolName.Network.WebSocketHandshakeResponseReceived)]
+	[SupportedBy("iOS")]
 	public class WebSocketHandshakeResponseReceivedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/WebSocketRequest.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketRequest.cs
new file mode 100644
index 0000000..5cd5c78
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketRequest.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// WebSocket request data.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class WebSocketRequest
+	{
+		/// <summary>
+		/// Gets or sets HTTP response headers.
+		/// </summary>
+		public Dictionary<string, string> Headers { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/WebSocketResponse.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketResponse.cs
new file mode 100644
index 0000000..7d0972c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketResponse.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// WebSocket response data.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class WebSocketResponse
+	{
+		/// <summary>
+		/// Gets or sets HTTP response status code.
+		/// </summary>
+		public double Status { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response status text.
+		/// </summary>
+		public string StatusText { get; set; }
+		/// <summary>
+		/// Gets or sets HTTP response headers.
+		/// </summary>
+		public Dictionary<string, string> Headers { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Network/WebSocketWillSendHandshakeRequestEvent.cs b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketWillSendHandshakeRequestEvent.cs
new file mode 100644
index 0000000..34b1fba
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Network/WebSocketWillSendHandshakeRequestEvent.cs
@@ -0,0 +1,25 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Network
+{
+	/// <summary>
+	/// Fired when WebSocket is about to initiate handshake.
+	/// </summary>
+	[Event(ProtocolName.Network.WebSocketWillSendHandshakeRequest)]
+	[SupportedBy("iOS")]
+	public class WebSocketWillSendHandshakeRequestEvent
+	{
+		/// <summary>
+		/// Gets or sets Request identifier.
+		/// </summary>
+		public string RequestId { get; set; }
+		/// <summary>
+		/// Gets or sets Timestamp.
+		/// </summary>
+		public double Timestamp { get; set; }
+		/// <summary>
+		/// Gets or sets WebSocket request data.
+		/// </summary>
+		public WebSocketRequest Request { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ContentFlowData.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ContentFlowData.cs
new file mode 100644
index 0000000..9a18a34
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ContentFlowData.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ContentFlowData
+	{
+		/// <summary>
+		/// Gets or sets Name
+		/// </summary>
+		public string Name { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ElementData.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ElementData.cs
new file mode 100644
index 0000000..08e0016
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ElementData.cs
@@ -0,0 +1,46 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// Data that describes an element to be highlighted.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ElementData
+	{
+		/// <summary>
+		/// Gets or sets TagName
+		/// </summary>
+		public string TagName { get; set; }
+		/// <summary>
+		/// Gets or sets The value of the element's 'id' attribute.
+		/// </summary>
+		public string IdValue { get; set; }
+		/// <summary>
+		/// Gets or sets ClassName
+		/// </summary>
+		public string ClassName { get; set; }
+		/// <summary>
+		/// Gets or sets Size
+		/// </summary>
+		public Size Size { get; set; }
+		/// <summary>
+		/// Gets or sets Computed accessibility role for the element.
+		/// </summary>
+		public string Role { get; set; }
+		/// <summary>
+		/// Gets or sets RegionFlowData
+		/// </summary>
+		public RegionFlowData RegionFlowData { get; set; }
+		/// <summary>
+		/// Gets or sets ContentFlowData
+		/// </summary>
+		public ContentFlowData ContentFlowData { get; set; }
+		/// <summary>
+		/// Gets or sets ShapeOutsideData
+		/// </summary>
+		public ShapeOutsideData ShapeOutsideData { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/FragmentHighlightData.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/FragmentHighlightData.cs
new file mode 100644
index 0000000..ef16f8d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/FragmentHighlightData.cs
@@ -0,0 +1,42 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// Data required to highlight multiple quads.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class FragmentHighlightData
+	{
+		/// <summary>
+		/// Gets or sets Quads for which the highlight should be applied.
+		/// </summary>
+		public Point[][] Quads { get; set; }
+		/// <summary>
+		/// Gets or sets ContentColor
+		/// </summary>
+		public string ContentColor { get; set; }
+		/// <summary>
+		/// Gets or sets ContentOutlineColor
+		/// </summary>
+		public string ContentOutlineColor { get; set; }
+		/// <summary>
+		/// Gets or sets PaddingColor
+		/// </summary>
+		public string PaddingColor { get; set; }
+		/// <summary>
+		/// Gets or sets BorderColor
+		/// </summary>
+		public string BorderColor { get; set; }
+		/// <summary>
+		/// Gets or sets MarginColor
+		/// </summary>
+		public string MarginColor { get; set; }
+		/// <summary>
+		/// Gets or sets RegionClippingArea
+		/// </summary>
+		public Point[] RegionClippingArea { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/NodeHighlightData.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/NodeHighlightData.cs
new file mode 100644
index 0000000..b50e08f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/NodeHighlightData.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// Data required to highlight a DOM node.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class NodeHighlightData
+	{
+		/// <summary>
+		/// Gets or sets Scroll offset for the MainFrame's FrameView that is shared across all quads.
+		/// </summary>
+		public Point ScrollOffset { get; set; }
+		/// <summary>
+		/// Gets or sets Fragments
+		/// </summary>
+		public FragmentHighlightData[] Fragments { get; set; }
+		/// <summary>
+		/// Gets or sets ElementData
+		/// </summary>
+		public ElementData ElementData { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/OverlayConfiguration.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/OverlayConfiguration.cs
new file mode 100644
index 0000000..37efda3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/OverlayConfiguration.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// Data required to configure the overlay's size and scaling behavior.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class OverlayConfiguration
+	{
+		/// <summary>
+		/// Gets or sets DeviceScaleFactor
+		/// </summary>
+		public double DeviceScaleFactor { get; set; }
+		/// <summary>
+		/// Gets or sets ViewportSize
+		/// </summary>
+		public Size ViewportSize { get; set; }
+		/// <summary>
+		/// Gets or sets FrameViewFullSize
+		/// </summary>
+		public Size FrameViewFullSize { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Point.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Point.cs
new file mode 100644
index 0000000..6ab9b65
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Point.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Point
+	{
+		/// <summary>
+		/// Gets or sets X
+		/// </summary>
+		public double X { get; set; }
+		/// <summary>
+		/// Gets or sets Y
+		/// </summary>
+		public double Y { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Rect.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Rect.cs
new file mode 100644
index 0000000..7f0f8b9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Rect.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// A rectangle specified by a reference coordinate and width/height offsets.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Rect
+	{
+		/// <summary>
+		/// Gets or sets X
+		/// </summary>
+		public double X { get; set; }
+		/// <summary>
+		/// Gets or sets Y
+		/// </summary>
+		public double Y { get; set; }
+		/// <summary>
+		/// Gets or sets Width
+		/// </summary>
+		public double Width { get; set; }
+		/// <summary>
+		/// Gets or sets Height
+		/// </summary>
+		public double Height { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Region.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Region.cs
new file mode 100644
index 0000000..ff60089
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Region.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// A single region in a flow thread.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Region
+	{
+		/// <summary>
+		/// Gets or sets BorderQuad
+		/// </summary>
+		public Point[] BorderQuad { get; set; }
+		/// <summary>
+		/// Gets or sets IncomingQuad
+		/// </summary>
+		public Point[] IncomingQuad { get; set; }
+		/// <summary>
+		/// Gets or sets OutgoingQuad
+		/// </summary>
+		public Point[] OutgoingQuad { get; set; }
+		/// <summary>
+		/// Gets or sets IsHighlighted
+		/// </summary>
+		public bool IsHighlighted { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/RegionFlowData.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/RegionFlowData.cs
new file mode 100644
index 0000000..961be56
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/RegionFlowData.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class RegionFlowData
+	{
+		/// <summary>
+		/// Gets or sets Regions
+		/// </summary>
+		public Region[] Regions { get; set; }
+		/// <summary>
+		/// Gets or sets Name
+		/// </summary>
+		public string Name { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ShapeOutsideData.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ShapeOutsideData.cs
new file mode 100644
index 0000000..85afb9e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/ShapeOutsideData.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ShapeOutsideData
+	{
+		/// <summary>
+		/// Gets or sets Bounds for the shape-outside paths.
+		/// </summary>
+		public Point[] Bounds { get; set; }
+		/// <summary>
+		/// Gets or sets Path for the element's shape.
+		/// </summary>
+		public object[] Shape { get; set; }
+		/// <summary>
+		/// Gets or sets Path for the element's margin shape.
+		/// </summary>
+		public object[] MarginShape { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Size.cs b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Size.cs
new file mode 100644
index 0000000..ce7342a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/OverlayTypes/Size.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.OverlayTypes
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class Size
+	{
+		/// <summary>
+		/// Gets or sets Width
+		/// </summary>
+		public long Width { get; set; }
+		/// <summary>
+		/// Gets or sets Height
+		/// </summary>
+		public long Height { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/AddScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Page/AddScriptToEvaluateOnLoadCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs
index bfc1e4e..5de2a5b 100644
--- a/source/ChromeDevTools/Protocol/Page/AddScriptToEvaluateOnLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[Command(ProtocolName.Page.AddScriptToEvaluateOnLoad)]
+	[SupportedBy("iOS")]
 	public class AddScriptToEvaluateOnLoadCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/AddScriptToEvaluateOnLoadCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
index 38fc102..f77398e 100644
--- a/source/ChromeDevTools/Protocol/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/AddScriptToEvaluateOnLoadCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[CommandResponse(ProtocolName.Page.AddScriptToEvaluateOnLoad)]
+	[SupportedBy("iOS")]
 	public class AddScriptToEvaluateOnLoadCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs
new file mode 100644
index 0000000..c361e3c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Grab an archive of the page.
+	/// </summary>
+	[Command(ProtocolName.Page.Archive)]
+	[SupportedBy("iOS")]
+	public class ArchiveCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommandResponse.cs
new file mode 100644
index 0000000..3b8817c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ArchiveCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Grab an archive of the page.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.Archive)]
+	[SupportedBy("iOS")]
+	public class ArchiveCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Base64-encoded web archive.
+		/// </summary>
+		public string Data { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Network/Cookie.cs b/source/ChromeDevTools/Protocol/iOS/Page/Cookie.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Network/Cookie.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/Cookie.cs
index 1523c9a..8299945 100644
--- a/source/ChromeDevTools/Protocol/Network/Cookie.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/Cookie.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Network
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Cookie object
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Cookie
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/CoordinateSystem.cs b/source/ChromeDevTools/Protocol/iOS/Page/CoordinateSystem.cs
new file mode 100644
index 0000000..cf885a0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/CoordinateSystem.cs
@@ -0,0 +1,12 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page{
+	/// <summary>
+	/// Coordinate system used by supplied coordinates.
+	/// </summary>
+	public enum CoordinateSystem
+	{
+			Viewport,
+			Page,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/DeleteCookieCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/DeleteCookieCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs
index 8ddb8be..da80c23 100644
--- a/source/ChromeDevTools/Protocol/Page/DeleteCookieCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Deletes browser cookie with given name, domain and path.
 	/// </summary>
 	[Command(ProtocolName.Page.DeleteCookie)]
+	[SupportedBy("iOS")]
 	public class DeleteCookieCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/DeleteCookieCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Page/DeleteCookieCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommandResponse.cs
index 9fe0914..7cf3abf 100644
--- a/source/ChromeDevTools/Protocol/Page/DeleteCookieCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DeleteCookieCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Deletes browser cookie with given name, domain and path.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.DeleteCookie)]
+	[SupportedBy("iOS")]
 	public class DeleteCookieCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Page/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs
index dc55d53..ad60901 100644
--- a/source/ChromeDevTools/Protocol/Page/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Disables page domain notifications.
 	/// </summary>
 	[Command(ProtocolName.Page.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/DisableCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/DisableCommandResponse.cs
index 82289b0..d2fa938 100644
--- a/source/ChromeDevTools/Protocol/Page/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Disables page domain notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/DomContentEventFiredEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/DomContentEventFiredEvent.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Page/DomContentEventFiredEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/DomContentEventFiredEvent.cs
index 96bfb14..01a498e 100644
--- a/source/ChromeDevTools/Protocol/Page/DomContentEventFiredEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/DomContentEventFiredEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[Event(ProtocolName.Page.DomContentEventFired)]
+	[SupportedBy("iOS")]
 	public class DomContentEventFiredEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs
similarity index 75%
rename from source/ChromeDevTools/Protocol/Page/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs
index cafc3e5..9201e32 100644
--- a/source/ChromeDevTools/Protocol/Page/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Enables page domain notifications.
 	/// </summary>
 	[Command(ProtocolName.Page.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/EnableCommandResponse.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Page/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/EnableCommandResponse.cs
index d32f722..3f264da 100644
--- a/source/ChromeDevTools/Protocol/Page/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Enables page domain notifications.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/Frame.cs b/source/ChromeDevTools/Protocol/iOS/Page/Frame.cs
similarity index 93%
rename from source/ChromeDevTools/Protocol/Page/Frame.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/Frame.cs
index 6d02f5c..1f0078a 100644
--- a/source/ChromeDevTools/Protocol/Page/Frame.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/Frame.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Information about the Frame on the page.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class Frame
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/FrameClearedScheduledNavigationEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameClearedScheduledNavigationEvent.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Page/FrameClearedScheduledNavigationEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/FrameClearedScheduledNavigationEvent.cs
index 2880822..8b492dd 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameClearedScheduledNavigationEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameClearedScheduledNavigationEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when frame no longer has a scheduled navigation.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameClearedScheduledNavigation)]
+	[SupportedBy("iOS")]
 	public class FrameClearedScheduledNavigationEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/FrameDetachedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameDetachedEvent.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Page/FrameDetachedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/FrameDetachedEvent.cs
index 647de3d..323c357 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameDetachedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameDetachedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when frame has been detached from its parent.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameDetached)]
+	[SupportedBy("iOS")]
 	public class FrameDetachedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/FrameNavigatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameNavigatedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/FrameNavigatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/FrameNavigatedEvent.cs
index 7380309..e429637 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameNavigatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameNavigatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired once navigation of the frame has completed. Frame is now associated with the new loader.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameNavigated)]
+	[SupportedBy("iOS")]
 	public class FrameNavigatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/FrameResource.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameResource.cs
new file mode 100644
index 0000000..fa26bfe
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameResource.cs
@@ -0,0 +1,38 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class FrameResource
+	{
+		/// <summary>
+		/// Gets or sets Resource URL.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Type of this resource.
+		/// </summary>
+		public ResourceType Type { get; set; }
+		/// <summary>
+		/// Gets or sets Resource mimeType as determined by the browser.
+		/// </summary>
+		public string MimeType { get; set; }
+		/// <summary>
+		/// Gets or sets True if the resource failed to load.
+		/// </summary>
+		public bool Failed { get; set; }
+		/// <summary>
+		/// Gets or sets True if the resource was canceled during loading.
+		/// </summary>
+		public bool Canceled { get; set; }
+		/// <summary>
+		/// Gets or sets URL of source map associated with this resource (if any).
+		/// </summary>
+		public string SourceMapURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/FrameResourceTree.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameResourceTree.cs
new file mode 100644
index 0000000..58b125a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameResourceTree.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Information about the Frame hierarchy along with their cached resources.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class FrameResourceTree
+	{
+		/// <summary>
+		/// Gets or sets Frame information for this tree item.
+		/// </summary>
+		public Frame Frame { get; set; }
+		/// <summary>
+		/// Gets or sets Child frames.
+		/// </summary>
+		public FrameResourceTree[] ChildFrames { get; set; }
+		/// <summary>
+		/// Gets or sets Information about frame resources.
+		/// </summary>
+		public FrameResource[] Resources { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/FrameScheduledNavigationEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameScheduledNavigationEvent.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Page/FrameScheduledNavigationEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/FrameScheduledNavigationEvent.cs
index 9a5699e..db6afcd 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameScheduledNavigationEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameScheduledNavigationEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when frame schedules a potential navigation.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameScheduledNavigation)]
+	[SupportedBy("iOS")]
 	public class FrameScheduledNavigationEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/FrameStartedLoadingEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameStartedLoadingEvent.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Page/FrameStartedLoadingEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/FrameStartedLoadingEvent.cs
index ad40ed5..9a2732c 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameStartedLoadingEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameStartedLoadingEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when frame has started loading.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameStartedLoading)]
+	[SupportedBy("iOS")]
 	public class FrameStartedLoadingEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/FrameStoppedLoadingEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/FrameStoppedLoadingEvent.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Page/FrameStoppedLoadingEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/FrameStoppedLoadingEvent.cs
index 89ac8b1..20fae53 100644
--- a/source/ChromeDevTools/Protocol/Page/FrameStoppedLoadingEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/FrameStoppedLoadingEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when frame has stopped loading.
 	/// </summary>
 	[Event(ProtocolName.Page.FrameStoppedLoading)]
+	[SupportedBy("iOS")]
 	public class FrameStoppedLoadingEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs
new file mode 100644
index 0000000..07d65d2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Indicates the visibility of compositing borders.
+	/// </summary>
+	[Command(ProtocolName.Page.GetCompositingBordersVisible)]
+	[SupportedBy("iOS")]
+	public class GetCompositingBordersVisibleCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommandResponse.cs
new file mode 100644
index 0000000..38dca5a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetCompositingBordersVisibleCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Indicates the visibility of compositing borders.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.GetCompositingBordersVisible)]
+	[SupportedBy("iOS")]
+	public class GetCompositingBordersVisibleCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets If true, compositing borders are visible.
+		/// </summary>
+		public bool Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/GetCookiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/GetCookiesCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs
index ea82a8d..2b0aaae 100644
--- a/source/ChromeDevTools/Protocol/Page/GetCookiesCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.
 	/// </summary>
 	[Command(ProtocolName.Page.GetCookies)]
+	[SupportedBy("iOS")]
 	public class GetCookiesCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommandResponse.cs
new file mode 100644
index 0000000..aaf6e86
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetCookiesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Returns all browser cookies. Depending on the backend support, will return detailed cookie information in the <code>cookies</code> field.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.GetCookies)]
+	[SupportedBy("iOS")]
+	public class GetCookiesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Array of cookie objects.
+		/// </summary>
+		public Cookie[] Cookies { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/GetResourceContentCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/GetResourceContentCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs
index e243f69..dd27cd1 100644
--- a/source/ChromeDevTools/Protocol/Page/GetResourceContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Returns content of the given resource.
 	/// </summary>
 	[Command(ProtocolName.Page.GetResourceContent)]
+	[SupportedBy("iOS")]
 	public class GetResourceContentCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/GetResourceContentCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommandResponse.cs
similarity index 87%
rename from source/ChromeDevTools/Protocol/Page/GetResourceContentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommandResponse.cs
index 0cefa5b..19c1882 100644
--- a/source/ChromeDevTools/Protocol/Page/GetResourceContentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceContentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Returns content of the given resource.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.GetResourceContent)]
+	[SupportedBy("iOS")]
 	public class GetResourceContentCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/GetResourceTreeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/GetResourceTreeCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs
index 233e646..f2c0aa8 100644
--- a/source/ChromeDevTools/Protocol/Page/GetResourceTreeCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Returns present frame / resource tree structure.
 	/// </summary>
 	[Command(ProtocolName.Page.GetResourceTree)]
+	[SupportedBy("iOS")]
 	public class GetResourceTreeCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/GetResourceTreeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Page/GetResourceTreeCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommandResponse.cs
index 30a05a8..9b2459f 100644
--- a/source/ChromeDevTools/Protocol/Page/GetResourceTreeCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetResourceTreeCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Returns present frame / resource tree structure.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.GetResourceTree)]
+	[SupportedBy("iOS")]
 	public class GetResourceTreeCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs
new file mode 100644
index 0000000..1173bd5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Determines if scripts can be executed in the page.
+	/// </summary>
+	[Command(ProtocolName.Page.GetScriptExecutionStatus)]
+	[SupportedBy("iOS")]
+	public class GetScriptExecutionStatusCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommandResponse.cs
new file mode 100644
index 0000000..df849ed
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/GetScriptExecutionStatusCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Determines if scripts can be executed in the page.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.GetScriptExecutionStatus)]
+	[SupportedBy("iOS")]
+	public class GetScriptExecutionStatusCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Script execution status: "allowed" if scripts can be executed, "disabled" if script execution has been disabled through page settings, "forbidden" if script execution for the given page is not possible for other reasons.
+		/// </summary>
+		public string Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/HandleJavaScriptDialogCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs
similarity index 89%
rename from source/ChromeDevTools/Protocol/Page/HandleJavaScriptDialogCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs
index 545c1a1..7123b0e 100644
--- a/source/ChromeDevTools/Protocol/Page/HandleJavaScriptDialogCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).
 	/// </summary>
 	[Command(ProtocolName.Page.HandleJavaScriptDialog)]
+	[SupportedBy("iOS")]
 	public class HandleJavaScriptDialogCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/HandleJavaScriptDialogCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommandResponse.cs
similarity index 81%
rename from source/ChromeDevTools/Protocol/Page/HandleJavaScriptDialogCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommandResponse.cs
index 08a11f0..0d54eb2 100644
--- a/source/ChromeDevTools/Protocol/Page/HandleJavaScriptDialogCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/HandleJavaScriptDialogCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.HandleJavaScriptDialog)]
+	[SupportedBy("iOS")]
 	public class HandleJavaScriptDialogCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/JavascriptDialogClosedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/JavascriptDialogClosedEvent.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/JavascriptDialogClosedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/JavascriptDialogClosedEvent.cs
index 2801fbc..de637c0 100644
--- a/source/ChromeDevTools/Protocol/Page/JavascriptDialogClosedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/JavascriptDialogClosedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been closed.
 	/// </summary>
 	[Event(ProtocolName.Page.JavascriptDialogClosed)]
+	[SupportedBy("iOS")]
 	public class JavascriptDialogClosedEvent
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/JavascriptDialogOpeningEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/JavascriptDialogOpeningEvent.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Page/JavascriptDialogOpeningEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/JavascriptDialogOpeningEvent.cs
index 3e278a5..5359f2d 100644
--- a/source/ChromeDevTools/Protocol/Page/JavascriptDialogOpeningEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/JavascriptDialogOpeningEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to open.
 	/// </summary>
 	[Event(ProtocolName.Page.JavascriptDialogOpening)]
+	[SupportedBy("iOS")]
 	public class JavascriptDialogOpeningEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/LoadEventFiredEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/LoadEventFiredEvent.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Page/LoadEventFiredEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/LoadEventFiredEvent.cs
index 837db77..711d068 100644
--- a/source/ChromeDevTools/Protocol/Page/LoadEventFiredEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/LoadEventFiredEvent.cs
@@ -1,8 +1,9 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[Event(ProtocolName.Page.LoadEventFired)]
+	[SupportedBy("iOS")]
 	public class LoadEventFiredEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/NavigateCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Page/NavigateCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs
index 88f15c3..5a4e6d6 100644
--- a/source/ChromeDevTools/Protocol/Page/NavigateCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Navigates current page to the given URL.
 	/// </summary>
 	[Command(ProtocolName.Page.Navigate)]
+	[SupportedBy("iOS")]
 	public class NavigateCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommandResponse.cs
new file mode 100644
index 0000000..9f19066
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/NavigateCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Navigates current page to the given URL.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.Navigate)]
+	[SupportedBy("iOS")]
+	public class NavigateCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/ReloadCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Page/ReloadCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs
index e61f9f2..314d3fa 100644
--- a/source/ChromeDevTools/Protocol/Page/ReloadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Reloads given page optionally ignoring the cache.
 	/// </summary>
 	[Command(ProtocolName.Page.Reload)]
+	[SupportedBy("iOS")]
 	public class ReloadCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/ReloadCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Page/ReloadCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/ReloadCommandResponse.cs
index 04be259..c6e61e1 100644
--- a/source/ChromeDevTools/Protocol/Page/ReloadCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ReloadCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Reloads given page optionally ignoring the cache.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.Reload)]
+	[SupportedBy("iOS")]
 	public class ReloadCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Page/RemoveScriptToEvaluateOnLoadCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs
similarity index 80%
rename from source/ChromeDevTools/Protocol/Page/RemoveScriptToEvaluateOnLoadCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs
index e353c30..161af6e 100644
--- a/source/ChromeDevTools/Protocol/Page/RemoveScriptToEvaluateOnLoadCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[Command(ProtocolName.Page.RemoveScriptToEvaluateOnLoad)]
+	[SupportedBy("iOS")]
 	public class RemoveScriptToEvaluateOnLoadCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
similarity index 74%
rename from source/ChromeDevTools/Protocol/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
index 8388814..2d027f4 100644
--- a/source/ChromeDevTools/Protocol/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/RemoveScriptToEvaluateOnLoadCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	[CommandResponse(ProtocolName.Page.RemoveScriptToEvaluateOnLoad)]
+	[SupportedBy("iOS")]
 	public class RemoveScriptToEvaluateOnLoadCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/ResourceType.cs b/source/ChromeDevTools/Protocol/iOS/Page/ResourceType.cs
new file mode 100644
index 0000000..163f7d1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ResourceType.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page{
+	/// <summary>
+	/// Resource type as it was perceived by the rendering engine.
+	/// </summary>
+	public enum ResourceType
+	{
+			Document,
+			Stylesheet,
+			Image,
+			Font,
+			Script,
+			XHR,
+			WebSocket,
+			Other,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/ScriptsEnabledEvent.cs b/source/ChromeDevTools/Protocol/iOS/Page/ScriptsEnabledEvent.cs
new file mode 100644
index 0000000..eec6ba3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/ScriptsEnabledEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Fired when the JavaScript is enabled/disabled on the page
+	/// </summary>
+	[Event(ProtocolName.Page.ScriptsEnabled)]
+	[SupportedBy("iOS")]
+	public class ScriptsEnabledEvent
+	{
+		/// <summary>
+		/// Gets or sets Whether script execution is enabled or disabled on the page.
+		/// </summary>
+		public bool IsEnabled { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/SearchInResourceCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs
similarity index 92%
rename from source/ChromeDevTools/Protocol/Page/SearchInResourceCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs
index a98bc43..1c9d48b 100644
--- a/source/ChromeDevTools/Protocol/Page/SearchInResourceCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Searches for given string in resource content.
 	/// </summary>
 	[Command(ProtocolName.Page.SearchInResource)]
+	[SupportedBy("iOS")]
 	public class SearchInResourceCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommandResponse.cs
new file mode 100644
index 0000000..0ee9a25
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourceCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Searches for given string in resource content.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SearchInResource)]
+	[SupportedBy("iOS")]
+	public class SearchInResourceCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets List of search matches.
+		/// </summary>
+		public GenericTypes.SearchMatch[] Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs
new file mode 100644
index 0000000..1593e3c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Searches for given string in frame / resource tree structure.
+	/// </summary>
+	[Command(ProtocolName.Page.SearchInResources)]
+	[SupportedBy("iOS")]
+	public class SearchInResourcesCommand
+	{
+		/// <summary>
+		/// Gets or sets String to search for.
+		/// </summary>
+		public string Text { get; set; }
+		/// <summary>
+		/// Gets or sets If true, search is case sensitive.
+		/// </summary>
+		public bool CaseSensitive { get; set; }
+		/// <summary>
+		/// Gets or sets If true, treats string parameter as regex.
+		/// </summary>
+		public bool IsRegex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommandResponse.cs
new file mode 100644
index 0000000..92510a5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchInResourcesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Searches for given string in frame / resource tree structure.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SearchInResources)]
+	[SupportedBy("iOS")]
+	public class SearchInResourcesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets List of search results.
+		/// </summary>
+		public SearchResult[] Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SearchResult.cs b/source/ChromeDevTools/Protocol/iOS/Page/SearchResult.cs
new file mode 100644
index 0000000..fe29508
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SearchResult.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Search result for resource.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class SearchResult
+	{
+		/// <summary>
+		/// Gets or sets Resource URL.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Resource frame id.
+		/// </summary>
+		public string FrameId { get; set; }
+		/// <summary>
+		/// Gets or sets Number of matches in the resource content.
+		/// </summary>
+		public double MatchesCount { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs
new file mode 100644
index 0000000..b214a95
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Controls the visibility of compositing borders.
+	/// </summary>
+	[Command(ProtocolName.Page.SetCompositingBordersVisible)]
+	[SupportedBy("iOS")]
+	public class SetCompositingBordersVisibleCommand
+	{
+		/// <summary>
+		/// Gets or sets True for showing compositing borders.
+		/// </summary>
+		public bool Visible { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommandResponse.cs
new file mode 100644
index 0000000..01e7468
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetCompositingBordersVisibleCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Controls the visibility of compositing borders.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SetCompositingBordersVisible)]
+	[SupportedBy("iOS")]
+	public class SetCompositingBordersVisibleCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/SetDocumentContentCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Page/SetDocumentContentCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs
index 3ee8de8..a455870 100644
--- a/source/ChromeDevTools/Protocol/Page/SetDocumentContentCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Sets given markup as the document's HTML.
 	/// </summary>
 	[Command(ProtocolName.Page.SetDocumentContent)]
+	[SupportedBy("iOS")]
 	public class SetDocumentContentCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Page/SetDocumentContentCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommandResponse.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Page/SetDocumentContentCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommandResponse.cs
index 830b262..21cdb62 100644
--- a/source/ChromeDevTools/Protocol/Page/SetDocumentContentCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetDocumentContentCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Sets given markup as the document's HTML.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetDocumentContent)]
+	[SupportedBy("iOS")]
 	public class SetDocumentContentCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs
new file mode 100644
index 0000000..d002451
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Emulates the given media for CSS media queries.
+	/// </summary>
+	[Command(ProtocolName.Page.SetEmulatedMedia)]
+	[SupportedBy("iOS")]
+	public class SetEmulatedMediaCommand
+	{
+		/// <summary>
+		/// Gets or sets Media type to emulate. Empty string disables the override.
+		/// </summary>
+		public string Media { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommandResponse.cs
new file mode 100644
index 0000000..962a038
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetEmulatedMediaCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Emulates the given media for CSS media queries.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SetEmulatedMedia)]
+	[SupportedBy("iOS")]
+	public class SetEmulatedMediaCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs
new file mode 100644
index 0000000..4c77645
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Switches script execution in the page.
+	/// </summary>
+	[Command(ProtocolName.Page.SetScriptExecutionDisabled)]
+	[SupportedBy("iOS")]
+	public class SetScriptExecutionDisabledCommand
+	{
+		/// <summary>
+		/// Gets or sets Whether script execution should be disabled in the page.
+		/// </summary>
+		public bool Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommandResponse.cs
new file mode 100644
index 0000000..1efee9b
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetScriptExecutionDisabledCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Switches script execution in the page.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SetScriptExecutionDisabled)]
+	[SupportedBy("iOS")]
+	public class SetScriptExecutionDisabledCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs
new file mode 100644
index 0000000..6b280bd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Requests that backend shows paint rectangles
+	/// </summary>
+	[Command(ProtocolName.Page.SetShowPaintRects)]
+	[SupportedBy("iOS")]
+	public class SetShowPaintRectsCommand
+	{
+		/// <summary>
+		/// Gets or sets True for showing paint rectangles
+		/// </summary>
+		public bool Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommandResponse.cs
new file mode 100644
index 0000000..27ef286
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetShowPaintRectsCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Requests that backend shows paint rectangles
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SetShowPaintRects)]
+	[SupportedBy("iOS")]
+	public class SetShowPaintRectsCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs
new file mode 100644
index 0000000..81089c0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Toggles mouse event-based touch event emulation.
+	/// </summary>
+	[Command(ProtocolName.Page.SetTouchEmulationEnabled)]
+	[SupportedBy("iOS")]
+	public class SetTouchEmulationEnabledCommand
+	{
+		/// <summary>
+		/// Gets or sets Whether the touch event emulation should be enabled.
+		/// </summary>
+		public bool Enabled { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Page/SetTouchEmulationEnabledCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Page/SetTouchEmulationEnabledCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommandResponse.cs
index 55e85d5..67c6629 100644
--- a/source/ChromeDevTools/Protocol/Page/SetTouchEmulationEnabledCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SetTouchEmulationEnabledCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Page
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
 {
 	/// <summary>
 	/// Toggles mouse event-based touch event emulation.
 	/// </summary>
 	[CommandResponse(ProtocolName.Page.SetTouchEmulationEnabled)]
+	[SupportedBy("iOS")]
 	public class SetTouchEmulationEnabledCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs
new file mode 100644
index 0000000..b253834
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Capture a snapshot of the specified node that does not include unrelated layers.
+	/// </summary>
+	[Command(ProtocolName.Page.SnapshotNode)]
+	[SupportedBy("iOS")]
+	public class SnapshotNodeCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the node to snapshot.
+		/// </summary>
+		public long NodeId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommandResponse.cs
new file mode 100644
index 0000000..87afcf5
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotNodeCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Capture a snapshot of the specified node that does not include unrelated layers.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SnapshotNode)]
+	[SupportedBy("iOS")]
+	public class SnapshotNodeCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Base64-encoded image data (PNG).
+		/// </summary>
+		public string DataURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs
new file mode 100644
index 0000000..d556477
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommand.cs
@@ -0,0 +1,35 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Capture a snapshot of the page within the specified rectangle and coordinate system.
+	/// </summary>
+	[Command(ProtocolName.Page.SnapshotRect)]
+	[SupportedBy("iOS")]
+	public class SnapshotRectCommand
+	{
+		/// <summary>
+		/// Gets or sets X coordinate
+		/// </summary>
+		public long X { get; set; }
+		/// <summary>
+		/// Gets or sets Y coordinate
+		/// </summary>
+		public long Y { get; set; }
+		/// <summary>
+		/// Gets or sets Rectangle width
+		/// </summary>
+		public long Width { get; set; }
+		/// <summary>
+		/// Gets or sets Rectangle height
+		/// </summary>
+		public long Height { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates the coordinate system of the supplied rectangle.
+		/// </summary>
+		public string CoordinateSystem { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommandResponse.cs
new file mode 100644
index 0000000..59fa675
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Page/SnapshotRectCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Page
+{
+	/// <summary>
+	/// Capture a snapshot of the page within the specified rectangle and coordinate system.
+	/// </summary>
+	[CommandResponse(ProtocolName.Page.SnapshotRect)]
+	[SupportedBy("iOS")]
+	public class SnapshotRectCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Base64-encoded image data (PNG).
+		/// </summary>
+		public string DataURL { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/ProtocolName.cs b/source/ChromeDevTools/Protocol/iOS/ProtocolName.cs
new file mode 100644
index 0000000..0c2599f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/ProtocolName.cs
@@ -0,0 +1,327 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS
+{
+	public static class ProtocolName
+	{
+		public static class ApplicationCache
+		{
+			public const string GetFramesWithManifests = "ApplicationCache.getFramesWithManifests";
+			public const string Enable = "ApplicationCache.enable";
+			public const string GetManifestForFrame = "ApplicationCache.getManifestForFrame";
+			public const string GetApplicationCacheForFrame = "ApplicationCache.getApplicationCacheForFrame";
+			public const string ApplicationCacheStatusUpdated = "ApplicationCache.applicationCacheStatusUpdated";
+			public const string NetworkStateUpdated = "ApplicationCache.networkStateUpdated";
+		}
+
+		public static class CSS
+		{
+			public const string Enable = "CSS.enable";
+			public const string Disable = "CSS.disable";
+			public const string GetMatchedStylesForNode = "CSS.getMatchedStylesForNode";
+			public const string GetInlineStylesForNode = "CSS.getInlineStylesForNode";
+			public const string GetComputedStyleForNode = "CSS.getComputedStyleForNode";
+			public const string GetAllStyleSheets = "CSS.getAllStyleSheets";
+			public const string GetStyleSheet = "CSS.getStyleSheet";
+			public const string GetStyleSheetText = "CSS.getStyleSheetText";
+			public const string SetStyleSheetText = "CSS.setStyleSheetText";
+			public const string SetStyleText = "CSS.setStyleText";
+			public const string SetRuleSelector = "CSS.setRuleSelector";
+			public const string CreateStyleSheet = "CSS.createStyleSheet";
+			public const string AddRule = "CSS.addRule";
+			public const string GetSupportedCSSProperties = "CSS.getSupportedCSSProperties";
+			public const string GetSupportedSystemFontFamilyNames = "CSS.getSupportedSystemFontFamilyNames";
+			public const string ForcePseudoState = "CSS.forcePseudoState";
+			public const string GetNamedFlowCollection = "CSS.getNamedFlowCollection";
+			public const string MediaQueryResultChanged = "CSS.mediaQueryResultChanged";
+			public const string StyleSheetChanged = "CSS.styleSheetChanged";
+			public const string StyleSheetAdded = "CSS.styleSheetAdded";
+			public const string StyleSheetRemoved = "CSS.styleSheetRemoved";
+			public const string NamedFlowCreated = "CSS.namedFlowCreated";
+			public const string NamedFlowRemoved = "CSS.namedFlowRemoved";
+			public const string RegionOversetChanged = "CSS.regionOversetChanged";
+			public const string RegisteredNamedFlowContentElement = "CSS.registeredNamedFlowContentElement";
+			public const string UnregisteredNamedFlowContentElement = "CSS.unregisteredNamedFlowContentElement";
+		}
+
+		public static class Console
+		{
+			public const string Enable = "Console.enable";
+			public const string Disable = "Console.disable";
+			public const string ClearMessages = "Console.clearMessages";
+			public const string SetMonitoringXHREnabled = "Console.setMonitoringXHREnabled";
+			public const string AddInspectedNode = "Console.addInspectedNode";
+			public const string MessageAdded = "Console.messageAdded";
+			public const string MessageRepeatCountUpdated = "Console.messageRepeatCountUpdated";
+			public const string MessagesCleared = "Console.messagesCleared";
+		}
+
+		public static class DOM
+		{
+			public const string GetDocument = "DOM.getDocument";
+			public const string RequestChildNodes = "DOM.requestChildNodes";
+			public const string QuerySelector = "DOM.querySelector";
+			public const string QuerySelectorAll = "DOM.querySelectorAll";
+			public const string SetNodeName = "DOM.setNodeName";
+			public const string SetNodeValue = "DOM.setNodeValue";
+			public const string RemoveNode = "DOM.removeNode";
+			public const string SetAttributeValue = "DOM.setAttributeValue";
+			public const string SetAttributesAsText = "DOM.setAttributesAsText";
+			public const string RemoveAttribute = "DOM.removeAttribute";
+			public const string GetEventListenersForNode = "DOM.getEventListenersForNode";
+			public const string GetAccessibilityPropertiesForNode = "DOM.getAccessibilityPropertiesForNode";
+			public const string GetOuterHTML = "DOM.getOuterHTML";
+			public const string SetOuterHTML = "DOM.setOuterHTML";
+			public const string PerformSearch = "DOM.performSearch";
+			public const string GetSearchResults = "DOM.getSearchResults";
+			public const string DiscardSearchResults = "DOM.discardSearchResults";
+			public const string RequestNode = "DOM.requestNode";
+			public const string SetInspectModeEnabled = "DOM.setInspectModeEnabled";
+			public const string HighlightRect = "DOM.highlightRect";
+			public const string HighlightQuad = "DOM.highlightQuad";
+			public const string HighlightSelector = "DOM.highlightSelector";
+			public const string HighlightNode = "DOM.highlightNode";
+			public const string HideHighlight = "DOM.hideHighlight";
+			public const string HighlightFrame = "DOM.highlightFrame";
+			public const string PushNodeByPathToFrontend = "DOM.pushNodeByPathToFrontend";
+			public const string PushNodeByBackendIdToFrontend = "DOM.pushNodeByBackendIdToFrontend";
+			public const string ReleaseBackendNodeIds = "DOM.releaseBackendNodeIds";
+			public const string ResolveNode = "DOM.resolveNode";
+			public const string GetAttributes = "DOM.getAttributes";
+			public const string MoveTo = "DOM.moveTo";
+			public const string Undo = "DOM.undo";
+			public const string Redo = "DOM.redo";
+			public const string MarkUndoableState = "DOM.markUndoableState";
+			public const string Focus = "DOM.focus";
+			public const string DocumentUpdated = "DOM.documentUpdated";
+			public const string SetChildNodes = "DOM.setChildNodes";
+			public const string AttributeModified = "DOM.attributeModified";
+			public const string AttributeRemoved = "DOM.attributeRemoved";
+			public const string InlineStyleInvalidated = "DOM.inlineStyleInvalidated";
+			public const string CharacterDataModified = "DOM.characterDataModified";
+			public const string ChildNodeCountUpdated = "DOM.childNodeCountUpdated";
+			public const string ChildNodeInserted = "DOM.childNodeInserted";
+			public const string ChildNodeRemoved = "DOM.childNodeRemoved";
+			public const string ShadowRootPushed = "DOM.shadowRootPushed";
+			public const string ShadowRootPopped = "DOM.shadowRootPopped";
+			public const string PseudoElementAdded = "DOM.pseudoElementAdded";
+			public const string PseudoElementRemoved = "DOM.pseudoElementRemoved";
+		}
+
+		public static class DOMDebugger
+		{
+			public const string SetDOMBreakpoint = "DOMDebugger.setDOMBreakpoint";
+			public const string RemoveDOMBreakpoint = "DOMDebugger.removeDOMBreakpoint";
+			public const string SetEventListenerBreakpoint = "DOMDebugger.setEventListenerBreakpoint";
+			public const string RemoveEventListenerBreakpoint = "DOMDebugger.removeEventListenerBreakpoint";
+			public const string SetInstrumentationBreakpoint = "DOMDebugger.setInstrumentationBreakpoint";
+			public const string RemoveInstrumentationBreakpoint = "DOMDebugger.removeInstrumentationBreakpoint";
+			public const string SetXHRBreakpoint = "DOMDebugger.setXHRBreakpoint";
+			public const string RemoveXHRBreakpoint = "DOMDebugger.removeXHRBreakpoint";
+		}
+
+		public static class DOMStorage
+		{
+			public const string Enable = "DOMStorage.enable";
+			public const string Disable = "DOMStorage.disable";
+			public const string GetDOMStorageItems = "DOMStorage.getDOMStorageItems";
+			public const string SetDOMStorageItem = "DOMStorage.setDOMStorageItem";
+			public const string RemoveDOMStorageItem = "DOMStorage.removeDOMStorageItem";
+			public const string DomStorageItemsCleared = "DOMStorage.domStorageItemsCleared";
+			public const string DomStorageItemRemoved = "DOMStorage.domStorageItemRemoved";
+			public const string DomStorageItemAdded = "DOMStorage.domStorageItemAdded";
+			public const string DomStorageItemUpdated = "DOMStorage.domStorageItemUpdated";
+		}
+
+		public static class Database
+		{
+			public const string Enable = "Database.enable";
+			public const string Disable = "Database.disable";
+			public const string GetDatabaseTableNames = "Database.getDatabaseTableNames";
+			public const string ExecuteSQL = "Database.executeSQL";
+			public const string AddDatabase = "Database.addDatabase";
+		}
+
+		public static class Debugger
+		{
+			public const string Enable = "Debugger.enable";
+			public const string Disable = "Debugger.disable";
+			public const string SetBreakpointsActive = "Debugger.setBreakpointsActive";
+			public const string SetBreakpointByUrl = "Debugger.setBreakpointByUrl";
+			public const string SetBreakpoint = "Debugger.setBreakpoint";
+			public const string RemoveBreakpoint = "Debugger.removeBreakpoint";
+			public const string ContinueToLocation = "Debugger.continueToLocation";
+			public const string StepOver = "Debugger.stepOver";
+			public const string StepInto = "Debugger.stepInto";
+			public const string StepOut = "Debugger.stepOut";
+			public const string Pause = "Debugger.pause";
+			public const string Resume = "Debugger.resume";
+			public const string SearchInContent = "Debugger.searchInContent";
+			public const string GetScriptSource = "Debugger.getScriptSource";
+			public const string GetFunctionDetails = "Debugger.getFunctionDetails";
+			public const string SetPauseOnExceptions = "Debugger.setPauseOnExceptions";
+			public const string EvaluateOnCallFrame = "Debugger.evaluateOnCallFrame";
+			public const string SetOverlayMessage = "Debugger.setOverlayMessage";
+			public const string GlobalObjectCleared = "Debugger.globalObjectCleared";
+			public const string ScriptParsed = "Debugger.scriptParsed";
+			public const string ScriptFailedToParse = "Debugger.scriptFailedToParse";
+			public const string BreakpointResolved = "Debugger.breakpointResolved";
+			public const string Paused = "Debugger.paused";
+			public const string Resumed = "Debugger.resumed";
+			public const string DidSampleProbe = "Debugger.didSampleProbe";
+			public const string PlayBreakpointActionSound = "Debugger.playBreakpointActionSound";
+		}
+
+		public static class GenericTypes
+		{
+		}
+
+		public static class IndexedDB
+		{
+			public const string Enable = "IndexedDB.enable";
+			public const string Disable = "IndexedDB.disable";
+			public const string RequestDatabaseNames = "IndexedDB.requestDatabaseNames";
+			public const string RequestDatabase = "IndexedDB.requestDatabase";
+			public const string RequestData = "IndexedDB.requestData";
+			public const string ClearObjectStore = "IndexedDB.clearObjectStore";
+		}
+
+		public static class Inspector
+		{
+			public const string Enable = "Inspector.enable";
+			public const string Disable = "Inspector.disable";
+			public const string Initialized = "Inspector.initialized";
+			public const string EvaluateForTestInFrontend = "Inspector.evaluateForTestInFrontend";
+			public const string Inspect = "Inspector.inspect";
+			public const string Detached = "Inspector.detached";
+			public const string ActivateExtraDomains = "Inspector.activateExtraDomains";
+			public const string TargetCrashed = "Inspector.targetCrashed";
+		}
+
+		public static class LayerTree
+		{
+			public const string Enable = "LayerTree.enable";
+			public const string Disable = "LayerTree.disable";
+			public const string LayersForNode = "LayerTree.layersForNode";
+			public const string ReasonsForCompositingLayer = "LayerTree.reasonsForCompositingLayer";
+			public const string LayerTreeDidChange = "LayerTree.layerTreeDidChange";
+		}
+
+		public static class Network
+		{
+			public const string Enable = "Network.enable";
+			public const string Disable = "Network.disable";
+			public const string SetExtraHTTPHeaders = "Network.setExtraHTTPHeaders";
+			public const string GetResponseBody = "Network.getResponseBody";
+			public const string CanClearBrowserCache = "Network.canClearBrowserCache";
+			public const string ClearBrowserCache = "Network.clearBrowserCache";
+			public const string CanClearBrowserCookies = "Network.canClearBrowserCookies";
+			public const string ClearBrowserCookies = "Network.clearBrowserCookies";
+			public const string SetCacheDisabled = "Network.setCacheDisabled";
+			public const string LoadResource = "Network.loadResource";
+			public const string RequestWillBeSent = "Network.requestWillBeSent";
+			public const string RequestServedFromCache = "Network.requestServedFromCache";
+			public const string ResponseReceived = "Network.responseReceived";
+			public const string DataReceived = "Network.dataReceived";
+			public const string LoadingFinished = "Network.loadingFinished";
+			public const string LoadingFailed = "Network.loadingFailed";
+			public const string RequestServedFromMemoryCache = "Network.requestServedFromMemoryCache";
+			public const string WebSocketWillSendHandshakeRequest = "Network.webSocketWillSendHandshakeRequest";
+			public const string WebSocketHandshakeResponseReceived = "Network.webSocketHandshakeResponseReceived";
+			public const string WebSocketCreated = "Network.webSocketCreated";
+			public const string WebSocketClosed = "Network.webSocketClosed";
+			public const string WebSocketFrameReceived = "Network.webSocketFrameReceived";
+			public const string WebSocketFrameError = "Network.webSocketFrameError";
+			public const string WebSocketFrameSent = "Network.webSocketFrameSent";
+		}
+
+		public static class OverlayTypes
+		{
+		}
+
+		public static class Page
+		{
+			public const string Enable = "Page.enable";
+			public const string Disable = "Page.disable";
+			public const string AddScriptToEvaluateOnLoad = "Page.addScriptToEvaluateOnLoad";
+			public const string RemoveScriptToEvaluateOnLoad = "Page.removeScriptToEvaluateOnLoad";
+			public const string Reload = "Page.reload";
+			public const string Navigate = "Page.navigate";
+			public const string GetCookies = "Page.getCookies";
+			public const string DeleteCookie = "Page.deleteCookie";
+			public const string GetResourceTree = "Page.getResourceTree";
+			public const string GetResourceContent = "Page.getResourceContent";
+			public const string SearchInResource = "Page.searchInResource";
+			public const string SearchInResources = "Page.searchInResources";
+			public const string SetDocumentContent = "Page.setDocumentContent";
+			public const string SetShowPaintRects = "Page.setShowPaintRects";
+			public const string GetScriptExecutionStatus = "Page.getScriptExecutionStatus";
+			public const string SetScriptExecutionDisabled = "Page.setScriptExecutionDisabled";
+			public const string SetTouchEmulationEnabled = "Page.setTouchEmulationEnabled";
+			public const string SetEmulatedMedia = "Page.setEmulatedMedia";
+			public const string GetCompositingBordersVisible = "Page.getCompositingBordersVisible";
+			public const string SetCompositingBordersVisible = "Page.setCompositingBordersVisible";
+			public const string SnapshotNode = "Page.snapshotNode";
+			public const string SnapshotRect = "Page.snapshotRect";
+			public const string HandleJavaScriptDialog = "Page.handleJavaScriptDialog";
+			public const string Archive = "Page.archive";
+			public const string DomContentEventFired = "Page.domContentEventFired";
+			public const string LoadEventFired = "Page.loadEventFired";
+			public const string FrameNavigated = "Page.frameNavigated";
+			public const string FrameDetached = "Page.frameDetached";
+			public const string FrameStartedLoading = "Page.frameStartedLoading";
+			public const string FrameStoppedLoading = "Page.frameStoppedLoading";
+			public const string FrameScheduledNavigation = "Page.frameScheduledNavigation";
+			public const string FrameClearedScheduledNavigation = "Page.frameClearedScheduledNavigation";
+			public const string JavascriptDialogOpening = "Page.javascriptDialogOpening";
+			public const string JavascriptDialogClosed = "Page.javascriptDialogClosed";
+			public const string ScriptsEnabled = "Page.scriptsEnabled";
+		}
+
+		public static class Runtime
+		{
+			public const string Parse = "Runtime.parse";
+			public const string Evaluate = "Runtime.evaluate";
+			public const string CallFunctionOn = "Runtime.callFunctionOn";
+			public const string GetProperties = "Runtime.getProperties";
+			public const string GetDisplayableProperties = "Runtime.getDisplayableProperties";
+			public const string GetCollectionEntries = "Runtime.getCollectionEntries";
+			public const string SaveResult = "Runtime.saveResult";
+			public const string ReleaseObject = "Runtime.releaseObject";
+			public const string ReleaseObjectGroup = "Runtime.releaseObjectGroup";
+			public const string Run = "Runtime.run";
+			public const string Enable = "Runtime.enable";
+			public const string Disable = "Runtime.disable";
+			public const string GetRuntimeTypesForVariablesAtOffsets = "Runtime.getRuntimeTypesForVariablesAtOffsets";
+			public const string EnableTypeProfiler = "Runtime.enableTypeProfiler";
+			public const string DisableTypeProfiler = "Runtime.disableTypeProfiler";
+			public const string GetBasicBlocks = "Runtime.getBasicBlocks";
+			public const string ExecutionContextCreated = "Runtime.executionContextCreated";
+		}
+
+		public static class Timeline
+		{
+			public const string Start = "Timeline.start";
+			public const string Stop = "Timeline.stop";
+			public const string EventRecorded = "Timeline.eventRecorded";
+			public const string RecordingStarted = "Timeline.recordingStarted";
+			public const string RecordingStopped = "Timeline.recordingStopped";
+		}
+
+		public static class Worker
+		{
+			public const string Enable = "Worker.enable";
+			public const string Disable = "Worker.disable";
+			public const string SendMessageToWorker = "Worker.sendMessageToWorker";
+			public const string CanInspectWorkers = "Worker.canInspectWorkers";
+			public const string ConnectToWorker = "Worker.connectToWorker";
+			public const string DisconnectFromWorker = "Worker.disconnectFromWorker";
+			public const string SetAutoconnectToWorkers = "Worker.setAutoconnectToWorkers";
+			public const string WorkerCreated = "Worker.workerCreated";
+			public const string WorkerTerminated = "Worker.workerTerminated";
+			public const string DispatchMessageFromWorker = "Worker.dispatchMessageFromWorker";
+			public const string DisconnectedFromWorker = "Worker.disconnectedFromWorker";
+		}
+
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/BasicBlock.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/BasicBlock.cs
new file mode 100644
index 0000000..add3fb1
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/BasicBlock.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// From Wikipedia: a basic block is a portion of the code within a program with only one entry point and only one exit point. This type gives the location of a basic block and if that basic block has executed.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class BasicBlock
+	{
+		/// <summary>
+		/// Gets or sets Start offset of the basic block.
+		/// </summary>
+		public long StartOffset { get; set; }
+		/// <summary>
+		/// Gets or sets End offset of the basic block.
+		/// </summary>
+		public long EndOffset { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if the basic block has executed before.
+		/// </summary>
+		public bool HasExecuted { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/CallArgument.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/CallArgument.cs
new file mode 100644
index 0000000..83775ff
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/CallArgument.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CallArgument
+	{
+		/// <summary>
+		/// Gets or sets Primitive value.
+		/// </summary>
+		public object Value { get; set; }
+		/// <summary>
+		/// Gets or sets Remote object handle.
+		/// </summary>
+		public string ObjectId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/CallFunctionOnCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs
similarity index 94%
rename from source/ChromeDevTools/Protocol/Runtime/CallFunctionOnCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs
index 624a1bd..beb92fc 100644
--- a/source/ChromeDevTools/Protocol/Runtime/CallFunctionOnCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Calls function with given declaration on the given object. Object group of the result is inherited from the target object.
 	/// </summary>
 	[Command(ProtocolName.Runtime.CallFunctionOn)]
+	[SupportedBy("iOS")]
 	public class CallFunctionOnCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/CallFunctionOnCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommandResponse.cs
similarity index 88%
rename from source/ChromeDevTools/Protocol/Runtime/CallFunctionOnCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommandResponse.cs
index ac2c5cd..8dc7ed4 100644
--- a/source/ChromeDevTools/Protocol/Runtime/CallFunctionOnCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/CallFunctionOnCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Calls function with given declaration on the given object. Object group of the result is inherited from the target object.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.CallFunctionOn)]
+	[SupportedBy("iOS")]
 	public class CallFunctionOnCommandResponse
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/CollectionEntry.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/CollectionEntry.cs
new file mode 100644
index 0000000..ade69c2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/CollectionEntry.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CollectionEntry
+	{
+		/// <summary>
+		/// Gets or sets Entry key of a map-like collection, otherwise not provided.
+		/// </summary>
+		public Runtime.RemoteObject Key { get; set; }
+		/// <summary>
+		/// Gets or sets Entry value.
+		/// </summary>
+		public Runtime.RemoteObject Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs
similarity index 76%
rename from source/ChromeDevTools/Protocol/Runtime/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs
index 5c489d0..75ccc59 100644
--- a/source/ChromeDevTools/Protocol/Runtime/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Disables reporting of execution contexts creation.
 	/// </summary>
 	[Command(ProtocolName.Runtime.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Runtime/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommandResponse.cs
index 43a54a2..9738629 100644
--- a/source/ChromeDevTools/Protocol/Runtime/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Disables reporting of execution contexts creation.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs
new file mode 100644
index 0000000..c8a1336
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Disables type profiling on the VM.
+	/// </summary>
+	[Command(ProtocolName.Runtime.DisableTypeProfiler)]
+	[SupportedBy("iOS")]
+	public class DisableTypeProfilerCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommandResponse.cs
new file mode 100644
index 0000000..28b1cc0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/DisableTypeProfilerCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Disables type profiling on the VM.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.DisableTypeProfiler)]
+	[SupportedBy("iOS")]
+	public class DisableTypeProfilerCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Runtime/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs
index ac6a99f..6374310 100644
--- a/source/ChromeDevTools/Protocol/Runtime/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context.
 	/// </summary>
 	[Command(ProtocolName.Runtime.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommandResponse.cs
similarity index 84%
rename from source/ChromeDevTools/Protocol/Runtime/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommandResponse.cs
index 6cc6234..851762d 100644
--- a/source/ChromeDevTools/Protocol/Runtime/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs
new file mode 100644
index 0000000..3333151
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Enables type profiling on the VM.
+	/// </summary>
+	[Command(ProtocolName.Runtime.EnableTypeProfiler)]
+	[SupportedBy("iOS")]
+	public class EnableTypeProfilerCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommandResponse.cs
new file mode 100644
index 0000000..b662b2f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EnableTypeProfilerCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Enables type profiling on the VM.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.EnableTypeProfiler)]
+	[SupportedBy("iOS")]
+	public class EnableTypeProfilerCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EntryPreview.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EntryPreview.cs
new file mode 100644
index 0000000..4e9ae30
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EntryPreview.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class EntryPreview
+	{
+		/// <summary>
+		/// Gets or sets Entry key. Specified for map-like collection entries.
+		/// </summary>
+		public ObjectPreview Key { get; set; }
+		/// <summary>
+		/// Gets or sets Entry value.
+		/// </summary>
+		public ObjectPreview Value { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ErrorRange.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ErrorRange.cs
new file mode 100644
index 0000000..56c4e52
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ErrorRange.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Range of an error in source code.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ErrorRange
+	{
+		/// <summary>
+		/// Gets or sets Start offset of range (inclusive).
+		/// </summary>
+		public long StartOffset { get; set; }
+		/// <summary>
+		/// Gets or sets End offset of range (exclusive).
+		/// </summary>
+		public long EndOffset { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs
new file mode 100644
index 0000000..955ed08
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommand.cs
@@ -0,0 +1,47 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Evaluates expression on global object.
+	/// </summary>
+	[Command(ProtocolName.Runtime.Evaluate)]
+	[SupportedBy("iOS")]
+	public class EvaluateCommand
+	{
+		/// <summary>
+		/// Gets or sets Expression to evaluate.
+		/// </summary>
+		public string Expression { get; set; }
+		/// <summary>
+		/// Gets or sets Symbolic group name that can be used to release multiple objects.
+		/// </summary>
+		public string ObjectGroup { get; set; }
+		/// <summary>
+		/// Gets or sets Determines whether Command Line API should be available during the evaluation.
+		/// </summary>
+		public bool IncludeCommandLineAPI { get; set; }
+		/// <summary>
+		/// Gets or sets Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.
+		/// </summary>
+		public bool DoNotPauseOnExceptionsAndMuteConsole { get; set; }
+		/// <summary>
+		/// Gets or sets Specifies in which isolated context to perform evaluation. Each content script lives in an isolated context and this parameter may be used to specify one of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page.
+		/// </summary>
+		public long ContextId { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the result is expected to be a JSON object that should be sent by value.
+		/// </summary>
+		public bool ReturnByValue { get; set; }
+		/// <summary>
+		/// Gets or sets Whether preview should be generated for the result.
+		/// </summary>
+		public bool GeneratePreview { get; set; }
+		/// <summary>
+		/// Gets or sets Whether the resulting value should be considered for saving in the $n history.
+		/// </summary>
+		public bool SaveResult { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommandResponse.cs
new file mode 100644
index 0000000..6828015
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/EvaluateCommandResponse.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Evaluates expression on global object.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.Evaluate)]
+	[SupportedBy("iOS")]
+	public class EvaluateCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Evaluation result.
+		/// </summary>
+		public RemoteObject Result { get; set; }
+		/// <summary>
+		/// Gets or sets True if the result was thrown during the evaluation.
+		/// </summary>
+		public bool WasThrown { get; set; }
+		/// <summary>
+		/// Gets or sets If the result was saved, this is the $n index that can be used to access the value.
+		/// </summary>
+		public long SavedResultIndex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextCreatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextCreatedEvent.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Runtime/ExecutionContextCreatedEvent.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextCreatedEvent.cs
index 38d56a3..3b4e8c0 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ExecutionContextCreatedEvent.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextCreatedEvent.cs
@@ -1,11 +1,12 @@
 using MasterDevs.ChromeDevTools;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Issued when new execution context is created.
 	/// </summary>
 	[Event(ProtocolName.Runtime.ExecutionContextCreated)]
+	[SupportedBy("iOS")]
 	public class ExecutionContextCreatedEvent
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextDescription.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextDescription.cs
new file mode 100644
index 0000000..bd7e7f6
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ExecutionContextDescription.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Description of an isolated world.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ExecutionContextDescription
+	{
+		/// <summary>
+		/// Gets or sets Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed.
+		/// </summary>
+		public long Id { get; set; }
+		/// <summary>
+		/// Gets or sets True if this is a context where inpspected web page scripts run. False if it is a content script isolated context.
+		/// </summary>
+		public bool IsPageContext { get; set; }
+		/// <summary>
+		/// Gets or sets Human readable name describing given context.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Id of the owning frame.
+		/// </summary>
+		public string FrameId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs
new file mode 100644
index 0000000..1a0da77
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns a list of basic blocks for the given sourceID with information about their text ranges and whether or not they have executed.
+	/// </summary>
+	[Command(ProtocolName.Runtime.GetBasicBlocks)]
+	[SupportedBy("iOS")]
+	public class GetBasicBlocksCommand
+	{
+		/// <summary>
+		/// Gets or sets Indicates which sourceID information is requested for.
+		/// </summary>
+		public string SourceID { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommandResponse.cs
new file mode 100644
index 0000000..955510c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetBasicBlocksCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns a list of basic blocks for the given sourceID with information about their text ranges and whether or not they have executed.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.GetBasicBlocks)]
+	[SupportedBy("iOS")]
+	public class GetBasicBlocksCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets BasicBlocks
+		/// </summary>
+		public BasicBlock[] BasicBlocks { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs
new file mode 100644
index 0000000..bc86625
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommand.cs
@@ -0,0 +1,31 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns entries of given Map / Set collection.
+	/// </summary>
+	[Command(ProtocolName.Runtime.GetCollectionEntries)]
+	[SupportedBy("iOS")]
+	public class GetCollectionEntriesCommand
+	{
+		/// <summary>
+		/// Gets or sets Id of the collection to get entries for.
+		/// </summary>
+		public string ObjectId { get; set; }
+		/// <summary>
+		/// Gets or sets Symbolic group name that can be used to release multiple. If not provided, it will be the same objectGroup as the RemoteObject determined from <code>objectId</code>. This is useful for WeakMap to release the collection entries.
+		/// </summary>
+		public string ObjectGroup { get; set; }
+		/// <summary>
+		/// Gets or sets If provided skip to this index before collecting values. Otherwise, 0.
+		/// </summary>
+		public long StartIndex { get; set; }
+		/// <summary>
+		/// Gets or sets If provided only return <code>numberToFetch</code> values. Otherwise, return values all the way to the end.
+		/// </summary>
+		public long NumberToFetch { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommandResponse.cs
new file mode 100644
index 0000000..95610cd
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetCollectionEntriesCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns entries of given Map / Set collection.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.GetCollectionEntries)]
+	[SupportedBy("iOS")]
+	public class GetCollectionEntriesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Array of collection entries.
+		/// </summary>
+		public CollectionEntry[] Entries { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs
new file mode 100644
index 0000000..a962ef8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns displayable properties of a given object. Object group of the result is inherited from the target object. Displayable properties are own properties, internal properties, and native getters in the prototype chain (assumed to be bindings and treated like own properties for the frontend).
+	/// </summary>
+	[Command(ProtocolName.Runtime.GetDisplayableProperties)]
+	[SupportedBy("iOS")]
+	public class GetDisplayablePropertiesCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the object to return properties for.
+		/// </summary>
+		public string ObjectId { get; set; }
+		/// <summary>
+		/// Gets or sets Whether preview should be generated for property values.
+		/// </summary>
+		public bool GeneratePreview { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommandResponse.cs
new file mode 100644
index 0000000..b3d3738
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetDisplayablePropertiesCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns displayable properties of a given object. Object group of the result is inherited from the target object. Displayable properties are own properties, internal properties, and native getters in the prototype chain (assumed to be bindings and treated like own properties for the frontend).
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.GetDisplayableProperties)]
+	[SupportedBy("iOS")]
+	public class GetDisplayablePropertiesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Object properties.
+		/// </summary>
+		public PropertyDescriptor[] Properties { get; set; }
+		/// <summary>
+		/// Gets or sets Internal object properties.
+		/// </summary>
+		public InternalPropertyDescriptor[] InternalProperties { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs
new file mode 100644
index 0000000..f1b54ce
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommand.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns properties of a given object. Object group of the result is inherited from the target object.
+	/// </summary>
+	[Command(ProtocolName.Runtime.GetProperties)]
+	[SupportedBy("iOS")]
+	public class GetPropertiesCommand
+	{
+		/// <summary>
+		/// Gets or sets Identifier of the object to return properties for.
+		/// </summary>
+		public string ObjectId { get; set; }
+		/// <summary>
+		/// Gets or sets If true, returns properties belonging only to the object itself, not to its prototype chain.
+		/// </summary>
+		public bool OwnProperties { get; set; }
+		/// <summary>
+		/// Gets or sets Whether preview should be generated for property values.
+		/// </summary>
+		public bool GeneratePreview { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommandResponse.cs
new file mode 100644
index 0000000..94c755a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetPropertiesCommandResponse.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns properties of a given object. Object group of the result is inherited from the target object.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.GetProperties)]
+	[SupportedBy("iOS")]
+	public class GetPropertiesCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Object properties.
+		/// </summary>
+		public PropertyDescriptor[] Result { get; set; }
+		/// <summary>
+		/// Gets or sets Internal object properties.
+		/// </summary>
+		public InternalPropertyDescriptor[] InternalProperties { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs
new file mode 100644
index 0000000..428888a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns detailed informtation on given function.
+	/// </summary>
+	[Command(ProtocolName.Runtime.GetRuntimeTypesForVariablesAtOffsets)]
+	[SupportedBy("iOS")]
+	public class GetRuntimeTypesForVariablesAtOffsetsCommand
+	{
+		/// <summary>
+		/// Gets or sets An array of type locations we're requesting information for. Results are expected in the same order they're sent in.
+		/// </summary>
+		public TypeLocation[] Locations { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommandResponse.cs
new file mode 100644
index 0000000..54294e8
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/GetRuntimeTypesForVariablesAtOffsetsCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Returns detailed informtation on given function.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.GetRuntimeTypesForVariablesAtOffsets)]
+	[SupportedBy("iOS")]
+	public class GetRuntimeTypesForVariablesAtOffsetsCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Types
+		/// </summary>
+		public TypeDescription[] Types { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/InternalPropertyDescriptor.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/InternalPropertyDescriptor.cs
similarity index 86%
rename from source/ChromeDevTools/Protocol/Runtime/InternalPropertyDescriptor.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/InternalPropertyDescriptor.cs
index 6424dc6..a343a84 100644
--- a/source/ChromeDevTools/Protocol/Runtime/InternalPropertyDescriptor.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/InternalPropertyDescriptor.cs
@@ -2,11 +2,12 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Object internal property descriptor. This property isn't normally visible in JavaScript code.
 	/// </summary>
+	[SupportedBy("iOS")]
 	public class InternalPropertyDescriptor
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ObjectPreview.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ObjectPreview.cs
new file mode 100644
index 0000000..d741e16
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ObjectPreview.cs
@@ -0,0 +1,46 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Object containing abbreviated remote object value.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class ObjectPreview
+	{
+		/// <summary>
+		/// Gets or sets Object type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Object subtype hint. Specified for <code>object</code> type values only.
+		/// </summary>
+		public string Subtype { get; set; }
+		/// <summary>
+		/// Gets or sets String representation of the object.
+		/// </summary>
+		public string Description { get; set; }
+		/// <summary>
+		/// Gets or sets Determines whether preview is lossless (contains all information of the original object).
+		/// </summary>
+		public bool Lossless { get; set; }
+		/// <summary>
+		/// Gets or sets True iff some of the properties of the original did not fit.
+		/// </summary>
+		public bool Overflow { get; set; }
+		/// <summary>
+		/// Gets or sets List of the properties.
+		/// </summary>
+		public PropertyPreview[] Properties { get; set; }
+		/// <summary>
+		/// Gets or sets List of the entries. Specified for <code>map</code> and <code>set</code> subtype values only.
+		/// </summary>
+		public EntryPreview[] Entries { get; set; }
+		/// <summary>
+		/// Gets or sets Size of the array/collection. Specified for array/map/set/weakmap/weakset object type values only.
+		/// </summary>
+		public long Size { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs
new file mode 100644
index 0000000..fb07bcf
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Parses JavaScript source code for errors.
+	/// </summary>
+	[Command(ProtocolName.Runtime.Parse)]
+	[SupportedBy("iOS")]
+	public class ParseCommand
+	{
+		/// <summary>
+		/// Gets or sets Source code to parse.
+		/// </summary>
+		public string Source { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommandResponse.cs
new file mode 100644
index 0000000..5eb8372
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ParseCommandResponse.cs
@@ -0,0 +1,27 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Parses JavaScript source code for errors.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.Parse)]
+	[SupportedBy("iOS")]
+	public class ParseCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets Parse result.
+		/// </summary>
+		public string Result { get; set; }
+		/// <summary>
+		/// Gets or sets Parse error message.
+		/// </summary>
+		public string Message { get; set; }
+		/// <summary>
+		/// Gets or sets Range in the source where the error occurred.
+		/// </summary>
+		public ErrorRange Range { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/PropertyDescriptor.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/PropertyDescriptor.cs
new file mode 100644
index 0000000..42e252a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/PropertyDescriptor.cs
@@ -0,0 +1,58 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Object property descriptor.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class PropertyDescriptor
+	{
+		/// <summary>
+		/// Gets or sets Property name or symbol description.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets The value associated with the property.
+		/// </summary>
+		public RemoteObject Value { get; set; }
+		/// <summary>
+		/// Gets or sets True if the value associated with the property may be changed (data descriptors only).
+		/// </summary>
+		public bool Writable { get; set; }
+		/// <summary>
+		/// Gets or sets A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only).
+		/// </summary>
+		public RemoteObject Get { get; set; }
+		/// <summary>
+		/// Gets or sets A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only).
+		/// </summary>
+		public RemoteObject Set { get; set; }
+		/// <summary>
+		/// Gets or sets True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object.
+		/// </summary>
+		public bool Configurable { get; set; }
+		/// <summary>
+		/// Gets or sets True if this property shows up during enumeration of the properties on the corresponding object.
+		/// </summary>
+		public bool Enumerable { get; set; }
+		/// <summary>
+		/// Gets or sets True if the result was thrown during the evaluation.
+		/// </summary>
+		public bool WasThrown { get; set; }
+		/// <summary>
+		/// Gets or sets True if the property is owned for the object.
+		/// </summary>
+		public bool IsOwn { get; set; }
+		/// <summary>
+		/// Gets or sets Property symbol object, if the property is a symbol.
+		/// </summary>
+		public Runtime.RemoteObject Symbol { get; set; }
+		/// <summary>
+		/// Gets or sets True if the property value came from a native getter.
+		/// </summary>
+		public bool NativeGetter { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/PropertyPreview.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/PropertyPreview.cs
new file mode 100644
index 0000000..2b71e03
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/PropertyPreview.cs
@@ -0,0 +1,38 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class PropertyPreview
+	{
+		/// <summary>
+		/// Gets or sets Property name.
+		/// </summary>
+		public string Name { get; set; }
+		/// <summary>
+		/// Gets or sets Object type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Object subtype hint. Specified for <code>object</code> type values only.
+		/// </summary>
+		public string Subtype { get; set; }
+		/// <summary>
+		/// Gets or sets User-friendly property value string.
+		/// </summary>
+		public string Value { get; set; }
+		/// <summary>
+		/// Gets or sets Nested value preview.
+		/// </summary>
+		public ObjectPreview ValuePreview { get; set; }
+		/// <summary>
+		/// Gets or sets True if this is an internal property.
+		/// </summary>
+		public bool Internal { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs
similarity index 82%
rename from source/ChromeDevTools/Protocol/Runtime/ReleaseObjectCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs
index 538b490..3708870 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Releases remote object with given id.
 	/// </summary>
 	[Command(ProtocolName.Runtime.ReleaseObject)]
+	[SupportedBy("iOS")]
 	public class ReleaseObjectCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommandResponse.cs
similarity index 77%
rename from source/ChromeDevTools/Protocol/Runtime/ReleaseObjectCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommandResponse.cs
index 3458996..7e67813 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Releases remote object with given id.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.ReleaseObject)]
+	[SupportedBy("iOS")]
 	public class ReleaseObjectCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectGroupCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs
similarity index 83%
rename from source/ChromeDevTools/Protocol/Runtime/ReleaseObjectGroupCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs
index 3a93e1e..0b721a1 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectGroupCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Releases all remote objects that belong to a given group.
 	/// </summary>
 	[Command(ProtocolName.Runtime.ReleaseObjectGroup)]
+	[SupportedBy("iOS")]
 	public class ReleaseObjectGroupCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectGroupCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Runtime/ReleaseObjectGroupCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommandResponse.cs
index a62dddb..a255519 100644
--- a/source/ChromeDevTools/Protocol/Runtime/ReleaseObjectGroupCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/ReleaseObjectGroupCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Releases all remote objects that belong to a given group.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.ReleaseObjectGroup)]
+	[SupportedBy("iOS")]
 	public class ReleaseObjectGroupCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/RemoteObject.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/RemoteObject.cs
new file mode 100644
index 0000000..38654d2
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/RemoteObject.cs
@@ -0,0 +1,50 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Mirror object referencing original JavaScript object.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class RemoteObject
+	{
+		/// <summary>
+		/// Gets or sets Object type.
+		/// </summary>
+		public string Type { get; set; }
+		/// <summary>
+		/// Gets or sets Object subtype hint. Specified for <code>object</code> <code>function</code> (for class) type values only.
+		/// </summary>
+		public string Subtype { get; set; }
+		/// <summary>
+		/// Gets or sets Object class (constructor) name. Specified for <code>object</code> type values only.
+		/// </summary>
+		public string ClassName { get; set; }
+		/// <summary>
+		/// Gets or sets Remote object value (in case of primitive values or JSON values if it was requested).
+		/// </summary>
+		public object Value { get; set; }
+		/// <summary>
+		/// Gets or sets String representation of the object.
+		/// </summary>
+		public string Description { get; set; }
+		/// <summary>
+		/// Gets or sets Unique object identifier (for non-primitive values).
+		/// </summary>
+		public string ObjectId { get; set; }
+		/// <summary>
+		/// Gets or sets Size of the array/collection. Specified for array/map/set/weakmap/weakset object type values only.
+		/// </summary>
+		public long Size { get; set; }
+		/// <summary>
+		/// Gets or sets Remote object for the class prototype. Specified for class object type values only.
+		/// </summary>
+		public RemoteObject ClassPrototype { get; set; }
+		/// <summary>
+		/// Gets or sets Preview containing abbreviated property values. Specified for <code>object</code> type values only.
+		/// </summary>
+		public ObjectPreview Preview { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Runtime/RunCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs
similarity index 78%
rename from source/ChromeDevTools/Protocol/Runtime/RunCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs
index 12cd2e5..35d5caa 100644
--- a/source/ChromeDevTools/Protocol/Runtime/RunCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommand.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Tells inspected instance(worker or page) that it can run in case it was started paused.
 	/// </summary>
 	[Command(ProtocolName.Runtime.Run)]
+	[SupportedBy("iOS")]
 	public class RunCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Runtime/RunCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommandResponse.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Runtime/RunCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Runtime/RunCommandResponse.cs
index e590442..a9a2883 100644
--- a/source/ChromeDevTools/Protocol/Runtime/RunCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/RunCommandResponse.cs
@@ -2,12 +2,13 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Runtime
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
 {
 	/// <summary>
 	/// Tells inspected instance(worker or page) that it can run in case it was started paused.
 	/// </summary>
 	[CommandResponse(ProtocolName.Runtime.Run)]
+	[SupportedBy("iOS")]
 	public class RunCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs
new file mode 100644
index 0000000..c39f947
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommand.cs
@@ -0,0 +1,23 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Assign a saved result index to this value.
+	/// </summary>
+	[Command(ProtocolName.Runtime.SaveResult)]
+	[SupportedBy("iOS")]
+	public class SaveResultCommand
+	{
+		/// <summary>
+		/// Gets or sets Id or value of the object to save.
+		/// </summary>
+		public CallArgument Value { get; set; }
+		/// <summary>
+		/// Gets or sets Unique id of the execution context. To specify in which execution context script evaluation should be performed. If not provided, determine from the CallArgument's objectId.
+		/// </summary>
+		public long ContextId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommandResponse.cs
new file mode 100644
index 0000000..a161805
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/SaveResultCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Assign a saved result index to this value.
+	/// </summary>
+	[CommandResponse(ProtocolName.Runtime.SaveResult)]
+	[SupportedBy("iOS")]
+	public class SaveResultCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets If the value was saved, this is the $n index that can be used to access the value.
+		/// </summary>
+		public long SavedResultIndex { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/StructureDescription.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/StructureDescription.cs
new file mode 100644
index 0000000..781d490
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/StructureDescription.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class StructureDescription
+	{
+		/// <summary>
+		/// Gets or sets Array of strings, where the strings represent object properties.
+		/// </summary>
+		public string[] Fields { get; set; }
+		/// <summary>
+		/// Gets or sets Array of strings, where the strings represent optional object properties.
+		/// </summary>
+		public string[] OptionalFields { get; set; }
+		/// <summary>
+		/// Gets or sets Name of the constructor.
+		/// </summary>
+		public string ConstructorName { get; set; }
+		/// <summary>
+		/// Gets or sets Pointer to the StructureRepresentation of the protoype if one exists.
+		/// </summary>
+		public StructureDescription PrototypeStructure { get; set; }
+		/// <summary>
+		/// Gets or sets If true, it indicates that the fields in this StructureDescription may be inaccurate. I.e, there might have been fields that have been deleted before it was profiled or it has fields we haven't profiled.
+		/// </summary>
+		public bool IsImprecise { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/SyntaxErrorType.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/SyntaxErrorType.cs
new file mode 100644
index 0000000..283703c
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/SyntaxErrorType.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime{
+	/// <summary>
+	/// Syntax error type: "none" for no error, "irrecoverable" for unrecoverable errors, "unterminated-literal" for when there is an unterminated literal, "recoverable" for when the expression is unfinished but valid so far.
+	/// </summary>
+	public enum SyntaxErrorType
+	{
+			None,
+			Irrecoverable,
+			Unterminated_literal,
+			Recoverable,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/TypeDescription.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/TypeDescription.cs
new file mode 100644
index 0000000..a07185e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/TypeDescription.cs
@@ -0,0 +1,34 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Container for type information that has been gathered.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class TypeDescription
+	{
+		/// <summary>
+		/// Gets or sets If true, we were able to correlate the offset successfuly with a program location. If false, the offset may be bogus or the offset may be from a CodeBlock that hasn't executed.
+		/// </summary>
+		public bool IsValid { get; set; }
+		/// <summary>
+		/// Gets or sets Least common ancestor of all Constructors if the TypeDescription has seen any structures. This string is the display name of the shared constructor function.
+		/// </summary>
+		public string LeastCommonAncestor { get; set; }
+		/// <summary>
+		/// Gets or sets Set of booleans for determining the aggregate type of this type description.
+		/// </summary>
+		public TypeSet TypeSet { get; set; }
+		/// <summary>
+		/// Gets or sets Array of descriptions for all structures seen for this variable.
+		/// </summary>
+		public StructureDescription[] Structures { get; set; }
+		/// <summary>
+		/// Gets or sets If true, this indicates that no more structures are being profiled because some maximum threshold has been reached and profiling has stopped because of memory pressure.
+		/// </summary>
+		public bool IsTruncated { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/TypeLocation.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/TypeLocation.cs
new file mode 100644
index 0000000..4a8afe0
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/TypeLocation.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// Describes the location of an expression we want type information for.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class TypeLocation
+	{
+		/// <summary>
+		/// Gets or sets What kind of type information do we want (normal, function return values, 'this' statement).
+		/// </summary>
+		public long TypeInformationDescriptor { get; set; }
+		/// <summary>
+		/// Gets or sets sourceID uniquely identifying a script
+		/// </summary>
+		public string SourceID { get; set; }
+		/// <summary>
+		/// Gets or sets character offset for assignment range
+		/// </summary>
+		public long Divot { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Runtime/TypeSet.cs b/source/ChromeDevTools/Protocol/iOS/Runtime/TypeSet.cs
new file mode 100644
index 0000000..815411d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Runtime/TypeSet.cs
@@ -0,0 +1,50 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Runtime
+{
+	/// <summary>
+	/// 
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class TypeSet
+	{
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Function.
+		/// </summary>
+		public bool IsFunction { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Undefined.
+		/// </summary>
+		public bool IsUndefined { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Null.
+		/// </summary>
+		public bool IsNull { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Boolean.
+		/// </summary>
+		public bool IsBoolean { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Integer.
+		/// </summary>
+		public bool IsInteger { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Number.
+		/// </summary>
+		public bool IsNumber { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type String.
+		/// </summary>
+		public bool IsString { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Object.
+		/// </summary>
+		public bool IsObject { get; set; }
+		/// <summary>
+		/// Gets or sets Indicates if this type description has been type Symbol.
+		/// </summary>
+		public bool IsSymbol { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfile.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfile.cs
new file mode 100644
index 0000000..a86a506
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfile.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Profile.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CPUProfile
+	{
+		/// <summary>
+		/// Gets or sets Top level nodes in the stack.
+		/// </summary>
+		public CPUProfileNode[] RootNodes { get; set; }
+		/// <summary>
+		/// Gets or sets IdleTime
+		/// </summary>
+		public double IdleTime { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNode.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNode.cs
new file mode 100644
index 0000000..9334bdb
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNode.cs
@@ -0,0 +1,42 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// CPU Profile node. Holds callsite information, execution statistics and child nodes.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CPUProfileNode
+	{
+		/// <summary>
+		/// Gets or sets Unique identifier for this call site.
+		/// </summary>
+		public long Id { get; set; }
+		/// <summary>
+		/// Gets or sets Aggregate info about all the calls that making up this node.
+		/// </summary>
+		public CPUProfileNodeAggregateCallInfo CallInfo { get; set; }
+		/// <summary>
+		/// Gets or sets Function name.
+		/// </summary>
+		public string FunctionName { get; set; }
+		/// <summary>
+		/// Gets or sets URL.
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets Line number.
+		/// </summary>
+		public long LineNumber { get; set; }
+		/// <summary>
+		/// Gets or sets Column number.
+		/// </summary>
+		public long ColumnNumber { get; set; }
+		/// <summary>
+		/// Gets or sets Child nodes.
+		/// </summary>
+		public CPUProfileNode[] Children { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNodeAggregateCallInfo.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNodeAggregateCallInfo.cs
new file mode 100644
index 0000000..2dd27c3
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/CPUProfileNodeAggregateCallInfo.cs
@@ -0,0 +1,30 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Aggregate CPU Profile call info. Holds time information for all the calls that happened on a node.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class CPUProfileNodeAggregateCallInfo
+	{
+		/// <summary>
+		/// Gets or sets Total number of calls.
+		/// </summary>
+		public double CallCount { get; set; }
+		/// <summary>
+		/// Gets or sets Start time for the first call.
+		/// </summary>
+		public double StartTime { get; set; }
+		/// <summary>
+		/// Gets or sets End time for the last call.
+		/// </summary>
+		public double EndTime { get; set; }
+		/// <summary>
+		/// Gets or sets Total execution time for all calls combined.
+		/// </summary>
+		public double TotalTime { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/EventRecordedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/EventRecordedEvent.cs
new file mode 100644
index 0000000..786a776
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/EventRecordedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Fired for every instrumentation event while timeline is started.
+	/// </summary>
+	[Event(ProtocolName.Timeline.EventRecorded)]
+	[SupportedBy("iOS")]
+	public class EventRecordedEvent
+	{
+		/// <summary>
+		/// Gets or sets Timeline event record data.
+		/// </summary>
+		public TimelineEvent Record { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/EventType.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/EventType.cs
new file mode 100644
index 0000000..451e254
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/EventType.cs
@@ -0,0 +1,42 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline{
+	/// <summary>
+	/// Timeline record type.
+	/// </summary>
+	public enum EventType
+	{
+			EventDispatch,
+			ScheduleStyleRecalculation,
+			RecalculateStyles,
+			InvalidateLayout,
+			Layout,
+			Paint,
+			Composite,
+			RenderingFrame,
+			ScrollLayer,
+			ParseHTML,
+			TimerInstall,
+			TimerRemove,
+			TimerFire,
+			EvaluateScript,
+			MarkLoad,
+			MarkDOMContent,
+			TimeStamp,
+			Time,
+			TimeEnd,
+			XHRReadyStateChange,
+			XHRLoad,
+			FunctionCall,
+			ProbeSample,
+			ConsoleProfile,
+			GCEvent,
+			RequestAnimationFrame,
+			CancelAnimationFrame,
+			FireAnimationFrame,
+			WebSocketCreate,
+			WebSocketSendHandshakeRequest,
+			WebSocketReceiveHandshakeResponse,
+			WebSocketDestroy,
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStartedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStartedEvent.cs
new file mode 100644
index 0000000..9508ed4
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStartedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Fired when recording has started.
+	/// </summary>
+	[Event(ProtocolName.Timeline.RecordingStarted)]
+	[SupportedBy("iOS")]
+	public class RecordingStartedEvent
+	{
+		/// <summary>
+		/// Gets or sets Start time of this new recording.
+		/// </summary>
+		public double StartTime { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStoppedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStoppedEvent.cs
new file mode 100644
index 0000000..0187691
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/RecordingStoppedEvent.cs
@@ -0,0 +1,17 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Fired when recording has stopped.
+	/// </summary>
+	[Event(ProtocolName.Timeline.RecordingStopped)]
+	[SupportedBy("iOS")]
+	public class RecordingStoppedEvent
+	{
+		/// <summary>
+		/// Gets or sets End time of this recording.
+		/// </summary>
+		public double EndTime { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs
new file mode 100644
index 0000000..427fbc9
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommand.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Starts capturing instrumentation events.
+	/// </summary>
+	[Command(ProtocolName.Timeline.Start)]
+	[SupportedBy("iOS")]
+	public class StartCommand
+	{
+		/// <summary>
+		/// Gets or sets Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5.
+		/// </summary>
+		public long MaxCallStackDepth { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommandResponse.cs
new file mode 100644
index 0000000..c68f911
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/StartCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Starts capturing instrumentation events.
+	/// </summary>
+	[CommandResponse(ProtocolName.Timeline.Start)]
+	[SupportedBy("iOS")]
+	public class StartCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs
new file mode 100644
index 0000000..9e958ee
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Stops capturing instrumentation events.
+	/// </summary>
+	[Command(ProtocolName.Timeline.Stop)]
+	[SupportedBy("iOS")]
+	public class StopCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommandResponse.cs
new file mode 100644
index 0000000..97ec192
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/StopCommandResponse.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Stops capturing instrumentation events.
+	/// </summary>
+	[CommandResponse(ProtocolName.Timeline.Stop)]
+	[SupportedBy("iOS")]
+	public class StopCommandResponse
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Timeline/TimelineEvent.cs b/source/ChromeDevTools/Protocol/iOS/Timeline/TimelineEvent.cs
new file mode 100644
index 0000000..29b880f
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Timeline/TimelineEvent.cs
@@ -0,0 +1,26 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Timeline
+{
+	/// <summary>
+	/// Timeline record contains information about the recorded activity.
+	/// </summary>
+	[SupportedBy("iOS")]
+	public class TimelineEvent
+	{
+		/// <summary>
+		/// Gets or sets Event type.
+		/// </summary>
+		public EventType Type { get; set; }
+		/// <summary>
+		/// Gets or sets Event data.
+		/// </summary>
+		public object Data { get; set; }
+		/// <summary>
+		/// Gets or sets Nested records.
+		/// </summary>
+		public TimelineEvent[] Children { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs
new file mode 100644
index 0000000..955fd05
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommand.cs
@@ -0,0 +1,15 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	/// <summary>
+	/// Tells whether browser supports workers inspection.
+	/// </summary>
+	[Command(ProtocolName.Worker.CanInspectWorkers)]
+	[SupportedBy("iOS")]
+	public class CanInspectWorkersCommand
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommandResponse.cs
new file mode 100644
index 0000000..247dd22
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/CanInspectWorkersCommandResponse.cs
@@ -0,0 +1,19 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	/// <summary>
+	/// Tells whether browser supports workers inspection.
+	/// </summary>
+	[CommandResponse(ProtocolName.Worker.CanInspectWorkers)]
+	[SupportedBy("iOS")]
+	public class CanInspectWorkersCommandResponse
+	{
+		/// <summary>
+		/// Gets or sets True if browser has workers support.
+		/// </summary>
+		public bool Result { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs
new file mode 100644
index 0000000..cf97a6d
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Command(ProtocolName.Worker.ConnectToWorker)]
+	[SupportedBy("iOS")]
+	public class ConnectToWorkerCommand
+	{
+		/// <summary>
+		/// Gets or sets WorkerId
+		/// </summary>
+		public long WorkerId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/ConnectToWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommandResponse.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/Worker/ConnectToWorkerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommandResponse.cs
index 7910efb..fc4bb72 100644
--- a/source/ChromeDevTools/Protocol/Worker/ConnectToWorkerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/ConnectToWorkerCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[CommandResponse(ProtocolName.Worker.ConnectToWorker)]
+	[SupportedBy("iOS")]
 	public class ConnectToWorkerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Worker/DisableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Worker/DisableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs
index bce0e73..4e9cd81 100644
--- a/source/ChromeDevTools/Protocol/Worker/DisableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Worker/DisableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/Worker/DisableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/DisableCommandResponse.cs
index 3ae3a42..eba7e06 100644
--- a/source/ChromeDevTools/Protocol/Worker/DisableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[CommandResponse(ProtocolName.Worker.Disable)]
+	[SupportedBy("iOS")]
 	public class DisableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs
new file mode 100644
index 0000000..f6e671e
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommand.cs
@@ -0,0 +1,16 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Command(ProtocolName.Worker.DisconnectFromWorker)]
+	[SupportedBy("iOS")]
+	public class DisconnectFromWorkerCommand
+	{
+		/// <summary>
+		/// Gets or sets WorkerId
+		/// </summary>
+		public long WorkerId { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/DisconnectFromWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommandResponse.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Worker/DisconnectFromWorkerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommandResponse.cs
index e8cf83a..35b30dd 100644
--- a/source/ChromeDevTools/Protocol/Worker/DisconnectFromWorkerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectFromWorkerCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[CommandResponse(ProtocolName.Worker.DisconnectFromWorker)]
+	[SupportedBy("iOS")]
 	public class DisconnectFromWorkerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectedFromWorkerEvent.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectedFromWorkerEvent.cs
new file mode 100644
index 0000000..5de834a
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DisconnectedFromWorkerEvent.cs
@@ -0,0 +1,10 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Event(ProtocolName.Worker.DisconnectedFromWorker)]
+	[SupportedBy("iOS")]
+	public class DisconnectedFromWorkerEvent
+	{
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/DispatchMessageFromWorkerEvent.cs b/source/ChromeDevTools/Protocol/iOS/Worker/DispatchMessageFromWorkerEvent.cs
new file mode 100644
index 0000000..76a2315
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/DispatchMessageFromWorkerEvent.cs
@@ -0,0 +1,18 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Event(ProtocolName.Worker.DispatchMessageFromWorker)]
+	[SupportedBy("iOS")]
+	public class DispatchMessageFromWorkerEvent
+	{
+		/// <summary>
+		/// Gets or sets WorkerId
+		/// </summary>
+		public long WorkerId { get; set; }
+		/// <summary>
+		/// Gets or sets Message
+		/// </summary>
+		public object Message { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/EnableCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs
similarity index 68%
rename from source/ChromeDevTools/Protocol/Worker/EnableCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs
index 1dffbaa..cfaf51b 100644
--- a/source/ChromeDevTools/Protocol/Worker/EnableCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommand
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Worker/EnableCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommandResponse.cs
similarity index 70%
rename from source/ChromeDevTools/Protocol/Worker/EnableCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/EnableCommandResponse.cs
index 9241f21..e261be3 100644
--- a/source/ChromeDevTools/Protocol/Worker/EnableCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/EnableCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[CommandResponse(ProtocolName.Worker.Enable)]
+	[SupportedBy("iOS")]
 	public class EnableCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs
new file mode 100644
index 0000000..b590810
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommand.cs
@@ -0,0 +1,20 @@
+using MasterDevs.ChromeDevTools;
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Command(ProtocolName.Worker.SendMessageToWorker)]
+	[SupportedBy("iOS")]
+	public class SendMessageToWorkerCommand
+	{
+		/// <summary>
+		/// Gets or sets WorkerId
+		/// </summary>
+		public long WorkerId { get; set; }
+		/// <summary>
+		/// Gets or sets Message
+		/// </summary>
+		public object Message { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/Worker/SendMessageToWorkerCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommandResponse.cs
similarity index 72%
rename from source/ChromeDevTools/Protocol/Worker/SendMessageToWorkerCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommandResponse.cs
index 0b0ba84..f4e59d7 100644
--- a/source/ChromeDevTools/Protocol/Worker/SendMessageToWorkerCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/SendMessageToWorkerCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[CommandResponse(ProtocolName.Worker.SendMessageToWorker)]
+	[SupportedBy("iOS")]
 	public class SendMessageToWorkerCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/Worker/SetAutoconnectToWorkersCommand.cs b/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs
similarity index 79%
rename from source/ChromeDevTools/Protocol/Worker/SetAutoconnectToWorkersCommand.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs
index bced755..3163e97 100644
--- a/source/ChromeDevTools/Protocol/Worker/SetAutoconnectToWorkersCommand.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommand.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[Command(ProtocolName.Worker.SetAutoconnectToWorkers)]
+	[SupportedBy("iOS")]
 	public class SetAutoconnectToWorkersCommand
 	{
 		/// <summary>
diff --git a/source/ChromeDevTools/Protocol/Worker/SetAutoconnectToWorkersCommandResponse.cs b/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommandResponse.cs
similarity index 73%
rename from source/ChromeDevTools/Protocol/Worker/SetAutoconnectToWorkersCommandResponse.cs
rename to source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommandResponse.cs
index 9c4fcd9..65b7b84 100644
--- a/source/ChromeDevTools/Protocol/Worker/SetAutoconnectToWorkersCommandResponse.cs
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/SetAutoconnectToWorkersCommandResponse.cs
@@ -2,9 +2,10 @@ using MasterDevs.ChromeDevTools;
 using Newtonsoft.Json;
 using System.Collections.Generic;
 
-namespace MasterDevs.ChromeDevTools.Protocol.Worker
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
 {
 	[CommandResponse(ProtocolName.Worker.SetAutoconnectToWorkers)]
+	[SupportedBy("iOS")]
 	public class SetAutoconnectToWorkersCommandResponse
 	{
 	}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/WorkerCreatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Worker/WorkerCreatedEvent.cs
new file mode 100644
index 0000000..5f07816
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/WorkerCreatedEvent.cs
@@ -0,0 +1,22 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Event(ProtocolName.Worker.WorkerCreated)]
+	[SupportedBy("iOS")]
+	public class WorkerCreatedEvent
+	{
+		/// <summary>
+		/// Gets or sets WorkerId
+		/// </summary>
+		public long WorkerId { get; set; }
+		/// <summary>
+		/// Gets or sets Url
+		/// </summary>
+		public string Url { get; set; }
+		/// <summary>
+		/// Gets or sets InspectorConnected
+		/// </summary>
+		public bool InspectorConnected { get; set; }
+	}
+}
diff --git a/source/ChromeDevTools/Protocol/iOS/Worker/WorkerTerminatedEvent.cs b/source/ChromeDevTools/Protocol/iOS/Worker/WorkerTerminatedEvent.cs
new file mode 100644
index 0000000..6725424
--- /dev/null
+++ b/source/ChromeDevTools/Protocol/iOS/Worker/WorkerTerminatedEvent.cs
@@ -0,0 +1,14 @@
+using MasterDevs.ChromeDevTools;
+
+namespace MasterDevs.ChromeDevTools.Protocol.iOS.Worker
+{
+	[Event(ProtocolName.Worker.WorkerTerminated)]
+	[SupportedBy("iOS")]
+	public class WorkerTerminatedEvent
+	{
+		/// <summary>
+		/// Gets or sets WorkerId
+		/// </summary>
+		public long WorkerId { get; set; }
+	}
+}
diff --git a/source/ProtocolGenerator/Program.cs b/source/ProtocolGenerator/Program.cs
index 3a577f4..e2806e2 100644
--- a/source/ProtocolGenerator/Program.cs
+++ b/source/ProtocolGenerator/Program.cs
@@ -31,12 +31,12 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             Dictionary<string, string> protocolFiles = new Dictionary<string, string>();
             //protocolFiles.Add("Chrome-0.1", "Inspector-0.1.json");
             //protocolFiles.Add("Chrome-1.0", "Inspector-1.0.json");
-            //protocolFiles.Add("Chrome-1.1", "Inspector-1.1.json");
-            protocolFiles.Add("Chrome-Tip", "protocol.json");
+            //protocolFiles.Add("Chrome", "Inspector-1.1.json");
+            protocolFiles.Add("Chrome", "protocol.json");
             //protocolFiles.Add("iOS-7.0", "Inspector-iOS-7.0.json");
             //protocolFiles.Add("iOS-8.0", "Inspector-iOS-8.0.json");
             //protocolFiles.Add("iOS-9.0", "Inspector-iOS-9.0.json");
-            protocolFiles.Add("iOS-9.3", "Inspector-iOS-9.3.json");
+            protocolFiles.Add("iOS", "Inspector-iOS-9.3.json");
 
             Collection<Protocol> protocols = new Collection<Protocol>();
 
@@ -45,9 +45,6 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             // has different names accross different versions of the dev tools - e.g. the RGBA
             // type which is named RGBAColor for Safari.
             Dictionary<string, string> explicitMappings = new Dictionary<string, string>();
-            explicitMappings.Add("DOM.RGBAColor", "RGBA");
-            explicitMappings.Add("Page.Cookie", "Network.Cookie");
-            explicitMappings.Add("GenericTypes.SearchMatch", "Debugger.SearchMatch");
 
             foreach (var protocolFile in protocolFiles)
             {
@@ -56,12 +53,6 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
                 protocols.Add(p);
             }
 
-            Protocol protocolObject = new Protocol();
-            foreach(var protocol in protocols)
-            {
-                ProtocolMerger.Merge(protocol, protocolObject);
-            }
-
             var outputFolder = "OutputProtocol";
             if (args.Length > 0)
             {
@@ -70,13 +61,23 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             if (Directory.Exists(outputFolder))
             {
                 Directory.Delete(outputFolder, true);
+                Directory.CreateDirectory(outputFolder);
+            }
+
+            foreach (var protocol in protocols)
+            {
+                var outputDirectoryInfo = Directory.CreateDirectory(Path.Combine(outputFolder, protocol.Alias));
+                WriteProtocolClasses(protocol, outputDirectoryInfo);
             }
-            var outputDirectoryInfo = Directory.CreateDirectory(outputFolder);
-            WriteProtocolClasses(protocolObject, outputDirectoryInfo);
         }
 
         private static void WriteProtocolClasses(Protocol protocolObject, DirectoryInfo directory)
         {
+            _DomainPropertyTypes.Clear();
+            _DomainCommands.Clear();
+            _DomainEvents.Clear();
+            _SimpleTypes.Clear();
+
             var domains = protocolObject.Domains;
             foreach (var domain in domains)
             {
@@ -90,9 +91,9 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
                 var events = domain.Events;
                 _DomainCommands[domainName] = new List<string>();
                 _DomainEvents[domainName] = new List<string>();
-                WriteProtocolClasses(directory, domainName, types, commands, events);
+                WriteProtocolClasses(directory, protocolObject.Alias, domainName, types, commands, events);
             }
-            WriteMethodConstants(directory);
+            WriteMethodConstants(directory, protocolObject.Alias);
         }
 
         private static void AddPropertyTypes(string domain, IEnumerable<Type> types)
@@ -136,30 +137,30 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             domainDictionary[type.Name] = domain + "." + itemsType + "[]";
         }
 
-        private static void WriteProtocolClasses(DirectoryInfo directory, string domainName, IEnumerable<Type> types, IEnumerable<Command> commands, IEnumerable<Event> events)
+        private static void WriteProtocolClasses(DirectoryInfo directory, string ns, string domainName, IEnumerable<Type> types, IEnumerable<Command> commands, IEnumerable<Event> events)
         {
             var domainDirectoryInfo = CreateDomainFolder(directory, domainName);
             foreach (var type in types)
             {
-                WriteType(domainDirectoryInfo, type);
+                WriteType(domainDirectoryInfo, ns, type);
             }
             foreach (var command in commands)
             {
-                WriteCommand(domainDirectoryInfo, command);
+                WriteCommand(domainDirectoryInfo, ns, command);
             }
             foreach (var evnt in events)
             {
-                WriteEvent(domainDirectoryInfo, evnt);
+                WriteEvent(domainDirectoryInfo, ns, evnt);
             }
         }
 
-        private static void WriteMethodConstants(DirectoryInfo domainDirectoryInfo)
+        private static void WriteMethodConstants(DirectoryInfo domainDirectoryInfo, string ns)
         {
             var sb = new StringBuilder();
             sb.AppendFormat("using MasterDevs.ChromeDevTools;");
             sb.AppendLine();
             sb.AppendLine();
-            sb.AppendFormat("namespace {0}", RootNamespace);
+            sb.AppendFormat("namespace {0}.{1}", RootNamespace, ns);
             sb.AppendLine();
             sb.AppendLine("{");
             sb.AppendFormat("\tpublic static class {0}", ProtocolNameClass);
@@ -199,7 +200,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             WriteToFile(domainDirectoryInfo, ProtocolNameClass, sb.ToString());
         }
 
-        private static void WriteEvent(DirectoryInfo domainDirectoryInfo, Event evnt)
+        private static void WriteEvent(DirectoryInfo domainDirectoryInfo, string ns, Event evnt)
         {
             if (null == evnt) return;
             var eventName = evnt.Name;
@@ -207,17 +208,17 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             var parameters = evnt.Parameters;
             // ignoreing "handlers" ... i'm not sure what they are for yet
             _DomainEvents[domainDirectoryInfo.Name].Add(eventName);
-            WriteEvent(domainDirectoryInfo, eventName, description, parameters, evnt.SupportedBy);
+            WriteEvent(domainDirectoryInfo, ns, eventName, description, parameters, evnt.SupportedBy);
         }
 
-        private static void WriteEvent(DirectoryInfo domainDirectoryInfo, string eventName, string description, IEnumerable<Property> parameters, IEnumerable<string> supportedBy)
+        private static void WriteEvent(DirectoryInfo domainDirectoryInfo, string ns, string eventName, string description, IEnumerable<Property> parameters, IEnumerable<string> supportedBy)
         {
             var className = ToCamelCase(eventName) + EventSubclass;
             var sb = new StringBuilder();
             sb.AppendFormat("using MasterDevs.ChromeDevTools;");
             sb.AppendLine();
             sb.AppendLine();
-            sb.AppendFormat("namespace {0}.{1}", RootNamespace, domainDirectoryInfo.Name);
+            sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name);
             sb.AppendLine();
             sb.AppendLine("{");
             if (!String.IsNullOrEmpty(description))
@@ -242,7 +243,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             WriteToFile(domainDirectoryInfo, className, sb.ToString());
         }
 
-        private static void WriteCommand(DirectoryInfo domainDirectoryInfo, Command command)
+        private static void WriteCommand(DirectoryInfo domainDirectoryInfo, string ns, Command command)
         {
             if (null == command) return;
             var commandName = command.Name;
@@ -250,11 +251,11 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             var parameters = command.Parameters;
             var returnObject = command.Returns;
             _DomainCommands[domainDirectoryInfo.Name].Add(commandName);
-            WriteCommand(domainDirectoryInfo, commandName, description, parameters, command.SupportedBy);
-            WriteCommandResponse(domainDirectoryInfo, commandName, description, returnObject, command.SupportedBy);
+            WriteCommand(domainDirectoryInfo, ns, commandName, description, parameters, command.SupportedBy);
+            WriteCommandResponse(domainDirectoryInfo, ns, commandName, description, returnObject, command.SupportedBy);
         }
 
-        private static void WriteCommandResponse(DirectoryInfo domainDirectoryInfo, string commandName, string description, IEnumerable<Property> returnObject, IEnumerable<string> supportedBy)
+        private static void WriteCommandResponse(DirectoryInfo domainDirectoryInfo, string ns, string commandName, string description, IEnumerable<Property> returnObject, IEnumerable<string> supportedBy)
         {
             var className = ToCamelCase(commandName) + CommandResponseSubclass;
             var sb = new StringBuilder();
@@ -262,7 +263,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             sb.AppendLine("using Newtonsoft.Json;");
             sb.AppendLine("using System.Collections.Generic;");
             sb.AppendLine();
-            sb.AppendFormat("namespace {0}.{1}", RootNamespace, domainDirectoryInfo.Name);
+            sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name);
             sb.AppendLine();
             sb.AppendLine("{");
             if (!String.IsNullOrEmpty(description))
@@ -287,7 +288,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             WriteToFile(domainDirectoryInfo, className, sb.ToString());
         }
 
-        private static void WriteCommand(DirectoryInfo domainDirectoryInfo, string commandName, string description, IEnumerable<Property> parameters, IEnumerable<string> supportedBy)
+        private static void WriteCommand(DirectoryInfo domainDirectoryInfo, string ns, string commandName, string description, IEnumerable<Property> parameters, IEnumerable<string> supportedBy)
         {
             var className = ToCamelCase(commandName) + CommandSubclass;
             var sb = new StringBuilder();
@@ -296,7 +297,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             sb.AppendLine("using Newtonsoft.Json;");
             sb.AppendLine("using System.Collections.Generic;");
             sb.AppendLine();
-            sb.AppendFormat("namespace {0}.{1}", RootNamespace, domainDirectoryInfo.Name);
+            sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name);
             sb.AppendLine();
             sb.AppendLine("{");
             if (!String.IsNullOrEmpty(description))
@@ -321,11 +322,11 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             WriteToFile(domainDirectoryInfo, className, sb.ToString());
         }
 
-        private static void WriteType(DirectoryInfo domainDirectoryInfo, Type type)
+        private static void WriteType(DirectoryInfo domainDirectoryInfo, string ns, Type type)
         {
             if (null == type) return;
-            if (type.Enum.Any()) WriteTypeEnum(domainDirectoryInfo, type);
-            if (type.Properties.Any()) WriteTypeClass(domainDirectoryInfo, type);
+            if (type.Enum.Any()) WriteTypeEnum(domainDirectoryInfo, ns, type);
+            if (type.Properties.Any()) WriteTypeClass(domainDirectoryInfo, ns, type);
             WriteTypeSimple(domainDirectoryInfo, type);
         }
 
@@ -334,7 +335,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             _SimpleTypes[type.Name] = type.Kind;
         }
 
-        private static void WriteTypeClass(DirectoryInfo domainDirectoryInfo, Type type)
+        private static void WriteTypeClass(DirectoryInfo domainDirectoryInfo, string ns, Type type)
         {
             if ("object" != type.Kind) return;
             var className = type.Name;
@@ -344,7 +345,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             sb.AppendLine("using Newtonsoft.Json;");
             sb.AppendLine("using System.Collections.Generic;");
             sb.AppendLine();
-            sb.AppendFormat("namespace {0}.{1}", RootNamespace, domainDirectoryInfo.Name);
+            sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name);
             sb.AppendLine();
             sb.AppendLine("{");
             sb.AppendLine("\t/// <summary>");
@@ -469,20 +470,19 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
             return Char.ToUpper(propertyName[0]).ToString() + propertyName.Substring(1);
         }
 
-        private static void WriteTypeEnum(DirectoryInfo domainDirectoryInfo, Type type)
+        private static void WriteTypeEnum(DirectoryInfo domainDirectoryInfo, string ns, Type type)
         {
             var enumName = type.Name;
             StringBuilder sb = new StringBuilder();
             sb.AppendFormat("using MasterDevs.ChromeDevTools;");
             sb.AppendLine();
             sb.AppendLine();
-            sb.AppendFormat("namespace {0}.{1}", RootNamespace, domainDirectoryInfo.Name);
+            sb.AppendFormat("namespace {0}.{1}.{2}", RootNamespace, ns, domainDirectoryInfo.Name);
             sb.AppendLine("{");
             sb.AppendLine("\t/// <summary>");
             sb.AppendFormat("\t/// {0}", type.Description);
             sb.AppendLine();
             sb.AppendLine("\t/// </summary>");
-            WriteSupportedBy(sb, type);
             sb.AppendFormat("\tpublic enum {0}", enumName);
             sb.AppendLine();
             sb.AppendLine("\t{");
@@ -503,9 +503,9 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator
 
         private static void WriteSupportedBy(StringBuilder sb, IEnumerable<string> supportedBy)
         {
-            foreach(var browser in supportedBy)
+            foreach (var browser in supportedBy)
             {
-                sb.AppendLine($"\t[SupportedBy(\"{browser}\")");
+                sb.AppendLine($"\t[SupportedBy(\"{browser}\")]");
             }
         }
 
-- 
GitLab


From 0f224d880adf2e91590e9f2ce75225086bb03133 Mon Sep 17 00:00:00 2001
From: Frederik Carlier <frederik.carlier@quamotion.mobi>
Date: Wed, 3 Aug 2016 12:47:08 +0200
Subject: [PATCH 2/3] Strong-name the assemblies

---
 .../MasterDevs.ChromeDevTools.csproj              |   7 +++++++
 .../ChromeDevTools/MasterDevs.ChromeDevTools.snk  | Bin 0 -> 596 bytes
 2 files changed, 7 insertions(+)
 create mode 100644 source/ChromeDevTools/MasterDevs.ChromeDevTools.snk

diff --git a/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj b/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj
index 7feff54..7ca6178 100644
--- a/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj
+++ b/source/ChromeDevTools/MasterDevs.ChromeDevTools.csproj
@@ -31,6 +31,12 @@
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>MasterDevs.ChromeDevTools.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
   <ItemGroup>
     <Reference Include="Newtonsoft.Json">
       <HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -87,6 +93,7 @@
     <None Include="MasterDevs.ChromeDevTools.nuspec">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
+    <None Include="MasterDevs.ChromeDevTools.snk" />
     <None Include="packages.config" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
diff --git a/source/ChromeDevTools/MasterDevs.ChromeDevTools.snk b/source/ChromeDevTools/MasterDevs.ChromeDevTools.snk
new file mode 100644
index 0000000000000000000000000000000000000000..84e44dc119817c69e854156a9c139398700d9eec
GIT binary patch
literal 596
zcmZQ)VqjoUVPFUfb~IvOVPIfnU}TuO<x$=HSv(tqtj^V~2nm|(aY@ZHc78;tPs}mF
z?}ZCedQ#L5x$}I@<SKPD_C3)g9CToll#g$AA!kD*KkGWSV=o^R=QM7ZF8|W>@K?9V
zo0%V7nIj}Hlc%&f&t2O_ubTC;+A$fqbM10mzW1M52Q_w9$<6Qnys9Z8YPCh+U1p^h
z=S8nsIde#VG<)@DTAV>}O3OBxE<Tfb(T!#;cdSLUUAO%zKHS1N{rI#6Gbg)oZT&Lg
z%3LO!B+1Rc8&2#r6YcyJeMUmyMEk~*s`5ckEWVgTt=ZSnvLujyVh~s2*~9!P8{WU~
zWDuA<e|3CDGjrDR&cj74h1a-kE-qQmnXxTf*XV8Lk<xAVS*#RK3d(n^u2)=eTw%uL
z?bmKE`2M-avP^Zdkd=RDa8=fZ&(HY0--c-vl$iW~AjWw7(9Y!8Os|yH$<uZ>h9q0P
zo2JyfW@75=1z(=`{WqC(#{AQSJN?}cm+kMp)VEnO)^G2Td3$1a-tz0_$&#5r`=2^b
z{##Cc-pPyj@~3Z4yfanev}oPZ@YgZ|E6(&WFa26wVqKWDkt?RU;g}0gYINVKjl97b
z_Od%(Dokr@H`kvl?-<9*srqf|CWbw8bVIrORd<=$EIRgRf7UJuc6nvtzLNbn)c0&T
zbn(;H2)kQv`=?AlQ}xpDhInD?^J~G%hHV<fZzpd~Yf2SmEu6C|W7=!|?7)1JHnyWa
z$J{H5!V;LTdjC)R(w=*x*ZiHLV|aey&s9NOwXNy@yx&$B{rbI^#jxy$>{iVRnLC+r
H&%7A{`0x{T

literal 0
HcmV?d00001

-- 
GitLab


From 9a48b90ecede0cc1aaa34bd3929c3a4efb0858da Mon Sep 17 00:00:00 2001
From: Frederik Carlier <frederik.carlier@quamotion.mobi>
Date: Wed, 3 Aug 2016 15:40:29 +0200
Subject: [PATCH 3/3] MethodTypeMap: Allow the caller to specify which alias
 (Chrome/iOS) is being targetted

---
 source/ChromeDevTools/MethodTypeMap.cs | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/source/ChromeDevTools/MethodTypeMap.cs b/source/ChromeDevTools/MethodTypeMap.cs
index 3f96d98..4f1a668 100644
--- a/source/ChromeDevTools/MethodTypeMap.cs
+++ b/source/ChromeDevTools/MethodTypeMap.cs
@@ -12,17 +12,25 @@ namespace MasterDevs.ChromeDevTools
         private readonly Dictionary<string, Type> _eventTypes = new Dictionary<string, Type>();
 
         public MethodTypeMap()
+            : this("Chrome")
         {
-            LoadMethodTypeMap();
         }
 
-        private void LoadMethodTypeMap()
+        public MethodTypeMap(string alias)
+        {
+            LoadMethodTypeMap(alias);
+        }
+
+        private void LoadMethodTypeMap(string alias)
         {
             var assembly = Assembly.GetExecutingAssembly();
             var assemblyTypes = assembly.GetTypes();
             foreach (var type in assemblyTypes)
             {
                 if (!type.IsClass) continue;
+
+                if (!type.Namespace.StartsWith($"MasterDevs.ChromeDevTools.Protocol.{alias}")) continue;
+
                 if (type.Name.EndsWith("CommandResponse"))
                 {
                     var methodName = GetMethodName<CommandResponseAttribute>(type);
-- 
GitLab