<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[189950] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/189950">189950</a></dd>
<dt>Author</dt> <dd>rniwa@webkit.org</dd>
<dt>Date</dt> <dd>2015-09-17 17:47:09 -0700 (Thu, 17 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Source/WebCore:
Add HTMLSlotElement, Element.slot, and NonDocumentTypeChildNode.assignedSlot
https://bugs.webkit.org/show_bug.cgi?id=149241

Reviewed by Antti Koivisto.

Implement the slotting algorithm and related features: slot element, slot attribute, and assignedSlot
as specified by https://w3c.github.io/webcomponents/spec/shadow/#slotting-algorithm
as of 8bf56e8ea5521a7a911efd1cabeb2be0d5c3ca74.

The slotting algorithm is implemented by the newly introduced SlotAssignment class which is created on
demand by ShadowRoot when a HTMLSlotElement is inserted into the shadow root. SlotAssignment contains
a HashMap of a slot name to SlotInfo structure, which holds the number of slot elements of the said name,
the first element if it's known, and an ordered list of the assigned nodes.

When there is exactly one slot element of a given name, &quot;element&quot; returns the slot element in O(1).
When another slot of the same name is inserted into the same shadow tree, we increment &quot;elementCount&quot; and
set &quot;element&quot; to nullptr since we don't know which slot element comes first in the tree order without O(n)
tree traversal, which is lazily done in resolveAllSlotElements.

Observe that SlotInfo's &quot;element&quot; can be nullptr in two occasions: (1) when there is no slot element of
the given name (SlotAssignment::assignSlots may insert such an entry), and (2) when there are more than
one slot elements of the same name and we haven't run resolveAllSlotElements.

Resolving assigned nodes, on the other hand, is always O(n) unless all assignments are up to date, and
lazily computed by assignSlots. This is because inserting or removing a node doesn't tell us the relative
ordering of the node with respect to other nodes assigned to the same slot. For example, let's say we have
child nodes (A, B, C, D) and (A, D) are assigned to slot Alpha and (B, C) are assigned to slot Beta. If we
insert a new node E between nodes B and C and this node is assigned to slot Alpha, then we must create an
ordered list (A, E, D) for slot Alpha. Unfortunately, determining where to insert E in this list can cost
O(n) child traversal in the worst case.

Tests: fast/shadow-dom/HTMLSlotElement-interface.html
       fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* dom/Element.cpp:
(WebCore::Element::attributeChanged): Invalidate the slot assignments when slot attribute is changed.
(WebCore::Element::childrenChanged): Ditto for when a child node is inserted or removed. We can avoid it
when there is no default slot and only text nodes are removed or added in the future.
* dom/Element.idl: Added slot attribute on Element.
* dom/Node.cpp:
(WebCore::Node::assignedSlot): Added. Returns the assigned slot if the slot is in an open shadow tree.
* dom/Node.h:
* dom/NonDocumentTypeChildNode.idl: Added assignedSlot. Only expose in JS for now to avoid generating
the binding code for HTMLSlotElement in other languages.
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::findAssignedSlot): Added. Forwards it to the implementation in SlotAssignment.
(WebCore::ShadowRoot::addSlotElementByName): Ditto.
(WebCore::ShadowRoot::removeSlotElementByName): Ditto.
(WebCore::ShadowRoot::invalidateSlotAssignments): Ditto.
(WebCore::ShadowRoot::assignedNodesForSlot): Ditto.
* dom/ShadowRoot.h:
(WebCore::ShadowRoot): Added m_slotAssignments as a member.
* dom/SlotAssignment.cpp: Added.
(WebCore::treatNullAsEmpty): Added. See https://w3c.github.io/webcomponents/spec/shadow/#dfn-default-slot
(WebCore::SlotAssignment::findAssignedSlot): Find the slot element to which a given node is assigned.
Since there could be multiple slot elements of the same name (or lack thereof), call findFirstSlotElement
to find the first slot element.
(WebCore::SlotAssignment::addSlotElementByName): Added. Called when a new slot element is inserted into
the associated shadow tree. When a slot element's name is changed, removeSlotElementByName is called on
with the old name before addSlotElementByName is called with the new name.
(WebCore::SlotAssignment::removeSlotElementByName): Ditto for removal.
(WebCore::SlotAssignment::assignedNodesForSlot): Added. Finds the ordered list of assigned nodes for
a given slot element. When there are multiple slot elements of the same name, we return the list only if
SlotInfo::element matches the argument. 
(WebCore::SlotAssignment::findFirstSlotElement): Added. Resolves SlotInfo::element if needed.
(WebCore::SlotAssignment::resolveAllSlotElements): Finds SlotInfo::element for all slots. We resolve all
slots simultaneously to avoid doing O(number of nodes) tree traversal for O(number of slots) to avoid
the worst case O(n^2) behavior when all nodes in the shadow tree are slot elements of the same name. 
(WebCore::SlotAssignment::assignSlots): Added. Computes the slot assignments by traversing each child
of the shadow host and adding to the appropriate SlotInfo::assignedNodes, creating a new entry if needed.
* dom/SlotAssignment.h: Added.
(WebCore::SlotAssignment::SlotAssignment):
(WebCore::SlotAssignment::invalidate):
(WebCore::SlotAssignment::SlotInfo::SlotInfo):
(WebCore::SlotAssignment::SlotInfo::hasSlotElements):
(WebCore::SlotAssignment::SlotInfo::hasDuplicatedSlotElements):
(WebCore::SlotAssignment::SlotInfo::shouldResolveSlotElement):
* html/HTMLAttributeNames.in: Added slot attribute.
* html/HTMLSlotElement.cpp: Added.
(WebCore::HTMLSlotElement::create):
(WebCore::HTMLSlotElement::HTMLSlotElement):
(WebCore::HTMLSlotElement::insertedInto): Calls addSlotElementByName.
(WebCore::HTMLSlotElement::removedFrom): Calls removeSlotElementByName. Because the element had already
been removed from the shadow tree, we can't use containingShadowRoot() to find the ShadowRoot here.
(WebCore::HTMLSlotElement::attributeChanged): Calls removeSlotElementByName and addSlotElementByName.
(WebCore::HTMLSlotElement::getDistributedNodes): Returns an ordered list of the assigned nodes.
* html/HTMLSlotElement.h: Added.
* html/HTMLSlotElement.idl: Added.
* html/HTMLTagNames.in: Added slot element.

LayoutTests:
Add HTMLSlotElement and NonDocumentTypeChildNode.assignedSlot
https://bugs.webkit.org/show_bug.cgi?id=149241

Reviewed by Antti Koivisto.

Added new conformance tests and rebaselined tests as needed.

In particular, inspector/model/remote-object.html was rebaselined since &quot;assignedSlot&quot; now appears as one of the first five
properties on Comment node that this test outputs.

* fast/shadow-dom/HTMLSlotElement-interface-expected.txt: Added.
* fast/shadow-dom/HTMLSlotElement-interface.html: Added.
* fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot-expected.txt: Added.
* fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html: Added.
* js/dom/dom-static-property-for-in-iteration-expected.txt:
* platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/inspector/model: Added.
* platform/mac/inspector/model/remote-object-expected.txt: Copied from LayoutTests/inspector/model/remote-object-expected.txt.
* platform/mac/js/dom/global-constructors-attributes-expected.txt:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsjsdomdomstaticpropertyforiniterationexpectedtxt">trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacmavericksjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcescpp">trunk/Source/WebCore/DerivedSources.cpp</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomElementcpp">trunk/Source/WebCore/dom/Element.cpp</a></li>
<li><a href="#trunkSourceWebCoredomElementidl">trunk/Source/WebCore/dom/Element.idl</a></li>
<li><a href="#trunkSourceWebCoredomNodecpp">trunk/Source/WebCore/dom/Node.cpp</a></li>
<li><a href="#trunkSourceWebCoredomNodeh">trunk/Source/WebCore/dom/Node.h</a></li>
<li><a href="#trunkSourceWebCoredomNonDocumentTypeChildNodeidl">trunk/Source/WebCore/dom/NonDocumentTypeChildNode.idl</a></li>
<li><a href="#trunkSourceWebCoredomShadowRootcpp">trunk/Source/WebCore/dom/ShadowRoot.cpp</a></li>
<li><a href="#trunkSourceWebCoredomShadowRooth">trunk/Source/WebCore/dom/ShadowRoot.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLAttributeNamesin">trunk/Source/WebCore/html/HTMLAttributeNames.in</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLTagNamesin">trunk/Source/WebCore/html/HTMLTagNames.in</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastshadowdomHTMLSlotElementinterfaceexpectedtxt">trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastshadowdomHTMLSlotElementinterfacehtml">trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface.html</a></li>
<li><a href="#trunkLayoutTestsfastshadowdomNonDocumentTypeChildNodeinterfaceassignedSlotexpectedtxt">trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastshadowdomNonDocumentTypeChildNodeinterfaceassignedSlothtml">trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html</a></li>
<li>trunk/LayoutTests/platform/mac/inspector/model/</li>
<li><a href="#trunkLayoutTestsplatformmacinspectormodelremoteobjectexpectedtxt">trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt</a></li>
<li><a href="#trunkSourceWebCoredomSlotAssignmentcpp">trunk/Source/WebCore/dom/SlotAssignment.cpp</a></li>
<li><a href="#trunkSourceWebCoredomSlotAssignmenth">trunk/Source/WebCore/dom/SlotAssignment.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSlotElementcpp">trunk/Source/WebCore/html/HTMLSlotElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSlotElementh">trunk/Source/WebCore/html/HTMLSlotElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLSlotElementidl">trunk/Source/WebCore/html/HTMLSlotElement.idl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/LayoutTests/ChangeLog        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2015-09-17  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
+
+        Add HTMLSlotElement and NonDocumentTypeChildNode.assignedSlot
+        https://bugs.webkit.org/show_bug.cgi?id=149241
+
+        Reviewed by Antti Koivisto.
+
+        Added new conformance tests and rebaselined tests as needed.
+
+        In particular, inspector/model/remote-object.html was rebaselined since &quot;assignedSlot&quot; now appears as one of the first five
+        properties on Comment node that this test outputs.
+
+        * fast/shadow-dom/HTMLSlotElement-interface-expected.txt: Added.
+        * fast/shadow-dom/HTMLSlotElement-interface.html: Added.
+        * fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot-expected.txt: Added.
+        * fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html: Added.
+        * js/dom/dom-static-property-for-in-iteration-expected.txt:
+        * platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
+        * platform/mac/inspector/model: Added.
+        * platform/mac/inspector/model/remote-object-expected.txt: Copied from LayoutTests/inspector/model/remote-object-expected.txt.
+        * platform/mac/js/dom/global-constructors-attributes-expected.txt:
+
</ins><span class="cx"> 2015-09-17  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         CSS WG multicol-1 tests failures with 1px differences due to baseline difference.
</span></span></pre></div>
<a id="trunkLayoutTestsfastshadowdomHTMLSlotElementinterfaceexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface-expected.txt (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS HTMLSlotElement must be defined on window 
+PASS &quot;name&quot; attribute on HTMLSlotElement must reflect &quot;name&quot; attribute 
+PASS getDistributedNodes method on HTMLSlotElement must return the list of distributed nodes 
+PASS getDistributedNodes must update when slot and name attributes are modified 
+PASS getDistributedNodes must update when slot elements are inserted or removed 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastshadowdomHTMLSlotElementinterfacehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface.html (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface.html                                (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/HTMLSlotElement-interface.html        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,138 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Shadow DOM: HTMLSlotElement interface&lt;/title&gt;
+&lt;meta name=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;meta name=&quot;assert&quot; content=&quot;HTMLSlotElement must exist on window with name attribute and getDistributedNodes() method&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/webcomponents/spec/shadow/#the-slot-element&quot;&gt;
+&lt;script src=&quot;../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;link rel='stylesheet' href='../../resources/testharness.css'&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+test(function () {
+    assert_true('HTMLSlotElement' in window, 'HTMLSlotElement must be defined on window');
+    assert_equals(HTMLSlotElement.prototype.__proto__, HTMLElement.prototype, 'HTMLSlotElement should inherit from HTMLElement');
+    assert_true(document.createElement('slot') instanceof HTMLSlotElement, 'slot element should be an instance of HTMLSlotElement');
+    assert_true(document.createElement('slot') instanceof HTMLElement, 'slot element should be an instance of HTMLElement');
+}, 'HTMLSlotElement must be defined on window');
+
+test(function () {
+    assert_true('name' in HTMLSlotElement.prototype, '&quot;name&quot; attribute must be defined on HTMLSlotElement.prototype');
+
+    var slotElement = document.createElement('slot');
+    assert_equals(slotElement.name, '', '&quot;name&quot; attribute must return the empty string when &quot;name&quot; content attribute is not set');
+
+    slotElement.setAttribute('name', 'foo');
+    assert_equals(slotElement.name, 'foo', '&quot;name&quot; attribute must return the value of the &quot;name&quot; content attribute');
+
+    slotElement.name = 'bar';
+    assert_equals(slotElement.name, 'bar', '&quot;name&quot; attribute must return the assigned value');
+    assert_equals(slotElement.getAttribute('name'), 'bar', '&quot;name&quot; attribute must update the &quot;name&quot; content attribute');
+}, '&quot;name&quot; attribute on HTMLSlotElement must reflect &quot;name&quot; attribute');
+
+test(function () {
+    assert_true('getDistributedNodes' in HTMLSlotElement.prototype, '&quot;getDistributedNodes&quot; method must be defined on HTMLSlotElement.prototype');
+
+    var shadowHost = document.createElement('div');
+    var child = document.createElement('p');
+
+    var shadowRoot = shadowHost.attachShadow({mode: 'open'});
+    var slotElement = document.createElement('slot');
+    shadowRoot.appendChild(slotElement);
+
+    assert_array_equals(slotElement.getDistributedNodes(), [], 'getDistributedNodes must return an empty array when there are no nodes in the shadow tree');
+
+    shadowHost.appendChild(child);
+    assert_array_equals(slotElement.getDistributedNodes(), [child], 'getDistributedNodes on a default slot must return an element without slot element');
+
+    child.setAttribute('slot', 'foo');
+    assert_array_equals(slotElement.getDistributedNodes(), [], 'getDistributedNodes on a default slot must not return an element with non-empty slot attribute');
+
+    child.setAttribute('slot', '');
+    assert_array_equals(slotElement.getDistributedNodes(), [child], 'getDistributedNodes on a default slot must return an element with empty slot attribute');
+
+    slotElement.setAttribute('name', 'bar');
+    assert_array_equals(slotElement.getDistributedNodes(), [], 'getDistributedNodes on a named slot must not return an element with empty slot attribute');
+
+    slotElement.setAttribute('name', '');
+    assert_array_equals(slotElement.getDistributedNodes(), [child], 'getDistributedNodes on an empty name slot must return an element with empty slot attribute');
+
+}, 'getDistributedNodes method on HTMLSlotElement must return the list of distributed nodes');
+
+test(function () {
+    var shadowHost = document.createElement('div');
+    var p = document.createElement('p');
+    var b = document.createElement('b');
+    shadowHost.appendChild(p);
+    shadowHost.appendChild(b);
+
+    var shadowRoot = shadowHost.attachShadow({mode: 'open'});
+    var slotElement = document.createElement('slot');
+    shadowRoot.appendChild(slotElement);
+
+    assert_array_equals(slotElement.getDistributedNodes(), [p, b], 'getDistributedNodes must return the distributed nodes');
+
+    slotElement.name = 'foo';
+    assert_array_equals(slotElement.getDistributedNodes(), [], 'getDistributedNodes must be empty when there are no matching elements for the slot name');
+
+    b.slot = 'foo';
+    assert_array_equals(slotElement.getDistributedNodes(), [b], 'getDistributedNodes must return the nodes with the matching slot name');
+
+    p.slot = 'foo';
+    assert_array_equals(slotElement.getDistributedNodes(), [p, b], 'getDistributedNodes must return the nodes with the matching slot name in the tree order');
+
+    slotElement.name = null;
+    assert_array_equals(slotElement.getDistributedNodes(), [], 'getDistributedNodes must be empty for a default slot when all elements have &quot;slot&quot; attributes specified');
+
+}, 'getDistributedNodes must update when slot and name attributes are modified');
+
+test(function () {
+    var shadowHost = document.createElement('div');
+    var p = document.createElement('p');
+    var text = document.createTextNode('');
+    var b = document.createElement('b');
+    shadowHost.appendChild(p);
+    shadowHost.appendChild(text);
+    shadowHost.appendChild(b);
+
+    var shadowRoot = shadowHost.attachShadow({mode: 'open'});
+
+    var firstSlotElement = document.createElement('slot');
+    shadowRoot.appendChild(firstSlotElement);
+
+    var secondSlotElement = document.createElement('slot');
+    shadowRoot.appendChild(secondSlotElement);
+
+    assert_array_equals(firstSlotElement.getDistributedNodes(), [p, text, b],
+        'getDistributedNodes on a default slot must return the elements without slot attributes and text nodes');
+    assert_array_equals(secondSlotElement.getDistributedNodes(), [],
+        'getDistributedNodes on the second unnamed slot element must return an empty array');
+
+    shadowRoot.removeChild(firstSlotElement);
+    assert_array_equals(firstSlotElement.getDistributedNodes(), [],
+        'getDistributedNodes on a detached formerly-default slot must return an empty array');
+    assert_array_equals(secondSlotElement.getDistributedNodes(), [p, text, b],
+        'getDistributedNodes on the second unnamed slot element after removing the first must return the elements without slot attributes and text nodes');
+
+    shadowRoot.removeChild(secondSlotElement);
+    shadowRoot.appendChild(secondSlotElement);
+    assert_array_equals(firstSlotElement.getDistributedNodes(), [],
+        'Removing and re-inserting a default slot must not change the result of getDistributedNodes on a detached slot');
+    assert_array_equals(secondSlotElement.getDistributedNodes(), [p, text, b],
+        'Removing and re-inserting a default slot must not change the result of getDistributedNodes');
+
+    shadowRoot.insertBefore(firstSlotElement, secondSlotElement);
+    assert_array_equals(firstSlotElement.getDistributedNodes(), [p, text, b],
+        'getDistributedNodes on a newly inserted unnamed slot element must return the elements without slot attributes and text nodes');
+    assert_array_equals(secondSlotElement.getDistributedNodes(), [],
+        'getDistributedNodes on formerly-first but now second unnamed slot element must return an empty array');
+
+}, 'getDistributedNodes must update when slot elements are inserted or removed');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsfastshadowdomNonDocumentTypeChildNodeinterfaceassignedSlotexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot-expected.txt (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS assignedSlot attribute must be defined on NonDocumentTypeChildNode interface 
+PASS assignedSlot must return null when the node does not have an assigned node 
+PASS assignedSlot must return the assigned slot 
+PASS assignedSlot must return null when the assigned slot element is inside a closed shadow tree 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastshadowdomNonDocumentTypeChildNodeinterfaceassignedSlothtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html                                (rev 0)
+++ trunk/LayoutTests/fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,109 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Shadow DOM: Extensions to NonDocumentTypeChildNode interface&lt;/title&gt;
+&lt;meta name=&quot;author&quot; title=&quot;Ryosuke Niwa&quot; href=&quot;mailto:rniwa@webkit.org&quot;&gt;
+&lt;meta name=&quot;assert&quot; content=&quot;NonDocumentTypeChildNode interface must have assignedSlot attribute&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/webcomponents/spec/shadow/#the-slot-element&quot;&gt;
+&lt;script src=&quot;../../resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;link rel='stylesheet' href='../../resources/testharness.css'&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+
+test(function () {
+    assert_true('assignedSlot' in Element.prototype, 'assignedSlot must be defined on Element.prototype');
+    assert_true('assignedSlot' in document.createElement('div'), 'assignedSlot must be defined on a div element');
+
+    assert_true('assignedSlot' in CharacterData.prototype, 'assignedSlot must be defined on CharacterData.prototype');
+    assert_true('assignedSlot' in document.createTextNode(''), 'assignedSlot must be defined on a text node');
+    assert_true('assignedSlot' in document.createComment(''), 'assignedSlot must be defined on a comment node');
+
+}, 'assignedSlot attribute must be defined on NonDocumentTypeChildNode interface');
+
+test(function () {
+    assert_equals(document.createElement('div').assignedSlot, null, 'assignedSlot must be null when the element is not in any tree');
+
+    var shadowHost = document.createElement('div');
+    var shadowRoot = shadowHost.attachShadow({mode: 'open'});
+
+    var childElement = document.createElement('b');
+    shadowHost.appendChild(childElement);
+    assert_equals(childElement.assignedSlot, null, 'assignedSlot on an element must be null when a node is not assigned of any slot');
+
+    var childTextNode = document.createTextNode('');
+    shadowHost.appendChild(childTextNode);
+    assert_equals(childTextNode.assignedSlot, null, 'assignedSlot on a text node must be null when a node is not assigned of any slot');
+
+    var commentNode = document.createComment('');
+    shadowHost.appendChild(commentNode);
+    assert_equals(commentNode.assignedSlot, null, 'assignedSlot on a comment node must be null when a node is not assigned of any slot');
+
+    var slot = document.createElement('slot');
+    slot.name = 'foo';
+    shadowRoot.appendChild(slot);
+    assert_equals(childElement.assignedSlot, null, 'assignedSlot on an element must be null when a node does not match any slot');
+    assert_equals(childTextNode.assignedSlot, null, 'assignedSlot on a text node must be null when a node does not match any slot');
+    assert_equals(commentNode.assignedSlot, null, 'assignedSlot on a comment must be null when a node does not match any slot');
+
+}, 'assignedSlot must return null when the node does not have an assigned node');
+
+test(function () {
+    var shadowHost = document.createElement('div');
+    var childElement = document.createElement('b');
+    shadowHost.appendChild(childElement);
+
+    var childTextNode = document.createTextNode('');
+    shadowHost.appendChild(childTextNode);
+
+    var commentNode = document.createTextNode('');
+    shadowHost.appendChild(commentNode);
+
+    var shadowRoot = shadowHost.attachShadow({mode: 'open'});
+    var slot = document.createElement('slot');
+    shadowRoot.appendChild(slot);
+
+    assert_equals(childElement.assignedSlot, slot, 'assignedSlot on an element must return the assigned default slot element');
+    assert_equals(childTextNode.assignedSlot, slot, 'assignedSlot on a text node must return the assigned default slot element');
+    assert_equals(commentNode.assignedSlot, slot, 'assignedSlot on a comment node must return the assigned default slot element');
+
+    slot.name = 'foo';
+    assert_equals(childElement.assignedSlot, null, 'assignedSlot on an element must null when the element is unassigned from a slot element');
+    assert_equals(childTextNode.assignedSlot, null, 'assignedSlot on a text node must null when the node is unassigned from a slot element');
+    assert_equals(commentNode.assignedSlot, null, 'assignedSlot on a text node must null when the node is unassigned from a slot element');
+
+    childElement.slot = 'foo';
+    assert_equals(childElement.assignedSlot, slot, 'assignedSlot on an element must return the re-assigned slot element');
+
+    slot.name = null;
+    assert_equals(childTextNode.assignedSlot, slot, 'assignedSlot on a text node must return the re-assigned slot element');
+    assert_equals(commentNode.assignedSlot, slot, 'assignedSlot on a comment node must return the re-assigned slot element');
+
+}, 'assignedSlot must return the assigned slot');
+
+test(function () {
+    var shadowHost = document.createElement('div');
+    var childElement = document.createElement('b');
+    shadowHost.appendChild(childElement);
+
+    var childTextNode = document.createTextNode('');
+    shadowHost.appendChild(childTextNode);
+
+    var commentNode = document.createTextNode('');
+    shadowHost.appendChild(commentNode);
+
+    var shadowRoot = shadowHost.attachShadow({mode: 'closed'});
+    var slot = document.createElement('slot');
+    shadowRoot.appendChild(slot);
+
+    assert_equals(childElement.assignedSlot, null, 'assignedSlot on an element must return the assigned slot element.');
+    assert_equals(childTextNode.assignedSlot, null, 'assignedSlot on a text node must return the assigned slot element.');
+    assert_equals(commentNode.assignedSlot, null, 'assignedSlot on a comment node must return the assigned slot element.');
+
+}, 'assignedSlot must return null when the assigned slot element is inside a closed shadow tree');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsjsdomdomstaticpropertyforiniterationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/LayoutTests/js/dom/dom-static-property-for-in-iteration-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -67,8 +67,10 @@
</span><span class="cx"> PASS a[&quot;uiactions&quot;] is 
</span><span class="cx"> PASS a[&quot;webkitRegionOverset&quot;] is undefined
</span><span class="cx"> PASS a[&quot;shadowRoot&quot;] is null
</span><ins>+PASS a[&quot;slot&quot;] is 
</ins><span class="cx"> PASS a[&quot;previousElementSibling&quot;] is [object HTMLDivElement]
</span><span class="cx"> PASS a[&quot;nextElementSibling&quot;] is [object HTMLScriptElement]
</span><ins>+PASS a[&quot;assignedSlot&quot;] is null
</ins><span class="cx"> PASS a[&quot;children&quot;] is [object HTMLCollection]
</span><span class="cx"> PASS a[&quot;firstElementChild&quot;] is null
</span><span class="cx"> PASS a[&quot;lastElementChild&quot;] is null
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacinspectormodelremoteobjectexpectedtxtfromrev189841trunkLayoutTestsinspectormodelremoteobjectexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt (from rev 189841, trunk/LayoutTests/inspector/model/remote-object-expected.txt) (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac/inspector/model/remote-object-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,4258 @@
</span><ins>+
+-----------------------------------------------------
+EXPRESSION: null
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;null&quot;,
+  &quot;_description&quot;: &quot;null&quot;,
+  &quot;_value&quot;: null
+}
+
+-----------------------------------------------------
+EXPRESSION: undefined
+{
+  &quot;_type&quot;: &quot;undefined&quot;,
+  &quot;_description&quot;: &quot;undefined&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Symbol()
+{
+  &quot;_type&quot;: &quot;symbol&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Symbol()&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Symbol('test')
+{
+  &quot;_type&quot;: &quot;symbol&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Symbol(test)&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: true
+{
+  &quot;_type&quot;: &quot;boolean&quot;,
+  &quot;_description&quot;: &quot;true&quot;,
+  &quot;_value&quot;: true
+}
+
+-----------------------------------------------------
+EXPRESSION: false
+{
+  &quot;_type&quot;: &quot;boolean&quot;,
+  &quot;_description&quot;: &quot;false&quot;,
+  &quot;_value&quot;: false
+}
+
+-----------------------------------------------------
+EXPRESSION: 0
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;0&quot;,
+  &quot;_value&quot;: 0
+}
+
+-----------------------------------------------------
+EXPRESSION: -0
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;-0&quot;,
+  &quot;_value&quot;: 0
+}
+
+-----------------------------------------------------
+EXPRESSION: 1
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;1&quot;,
+  &quot;_value&quot;: 1
+}
+
+-----------------------------------------------------
+EXPRESSION: -1
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;-1&quot;,
+  &quot;_value&quot;: -1
+}
+
+-----------------------------------------------------
+EXPRESSION: 1.234
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;1.234&quot;,
+  &quot;_value&quot;: 1.234
+}
+
+-----------------------------------------------------
+EXPRESSION: -1.234
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;-1.234&quot;,
+  &quot;_value&quot;: -1.234
+}
+
+-----------------------------------------------------
+EXPRESSION: 1e3
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;1000&quot;,
+  &quot;_value&quot;: 1000
+}
+
+-----------------------------------------------------
+EXPRESSION: Number.MAX_VALUE
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;1.7976931348623157e+308&quot;,
+  &quot;_value&quot;: 1.7976931348623157e+308
+}
+
+-----------------------------------------------------
+EXPRESSION: Number.MIN_VALUE
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;5e-324&quot;,
+  &quot;_value&quot;: 5e-324
+}
+
+-----------------------------------------------------
+EXPRESSION: NaN
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;NaN&quot;,
+  &quot;_value&quot;: null
+}
+
+-----------------------------------------------------
+EXPRESSION: Infinity
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;Infinity&quot;,
+  &quot;_value&quot;: null
+}
+
+-----------------------------------------------------
+EXPRESSION: -Infinity
+{
+  &quot;_type&quot;: &quot;number&quot;,
+  &quot;_description&quot;: &quot;-Infinity&quot;,
+  &quot;_value&quot;: null
+}
+
+-----------------------------------------------------
+EXPRESSION: ''
+{
+  &quot;_type&quot;: &quot;string&quot;,
+  &quot;_description&quot;: &quot;&quot;,
+  &quot;_value&quot;: &quot;&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: '&quot;'
+{
+  &quot;_type&quot;: &quot;string&quot;,
+  &quot;_description&quot;: &quot;\&quot;&quot;,
+  &quot;_value&quot;: &quot;\&quot;&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: &quot;'&quot;
+{
+  &quot;_type&quot;: &quot;string&quot;,
+  &quot;_description&quot;: &quot;'&quot;,
+  &quot;_value&quot;: &quot;'&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: 'string'
+{
+  &quot;_type&quot;: &quot;string&quot;,
+  &quot;_description&quot;: &quot;string&quot;,
+  &quot;_value&quot;: &quot;string&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: 'Unicode…'
+{
+  &quot;_type&quot;: &quot;string&quot;,
+  &quot;_description&quot;: &quot;Unicode…&quot;,
+  &quot;_value&quot;: &quot;Unicode…&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: 'I wish I had something to put here.'
+{
+  &quot;_type&quot;: &quot;string&quot;,
+  &quot;_description&quot;: &quot;I wish I had something to put here.&quot;,
+  &quot;_value&quot;: &quot;I wish I had something to put here.&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: (function(){})
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function (){}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: function foo(){}; foo
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function foo(){}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: function myFunction(a, b) { console.log(a, b); }; myFunction
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function myFunction(a, b) { console.log(a, b); }&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: function myTarget(a, b) { console.log(a, b); }; myTarget.bind(null)
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function myTarget() {\n    [native code]\n}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Array.prototype.push
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function push() {\n    [native code]\n}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: window.setTimeout
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function setTimeout() {\n    [native code]\n}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Object.getOwnPropertyDescriptor({ get getter() { return 1 } }, 'getter').get
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function () { return 1 }&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Object.getOwnPropertyDescriptor({ set setter(v) { console.log(v); } }, 'setter').set
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function (v) { console.log(v); }&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: / /
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;regexp&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;/ /&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;regexp&quot;,
+    &quot;_description&quot;: &quot;/ /&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;lastIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: /(?:)/
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;regexp&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;/(?:)/&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;regexp&quot;,
+    &quot;_description&quot;: &quot;/(?:)/&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;lastIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: /^r(e)g[e]{1,}x+/
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;regexp&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;/^r(e)g[e]{1,}x+/&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;regexp&quot;,
+    &quot;_description&quot;: &quot;/^r(e)g[e]{1,}x+/&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;lastIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: /^r(e)g[e]{1,}x+/ig
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;regexp&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;/^r(e)g[e]{1,}x+/gi&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;regexp&quot;,
+    &quot;_description&quot;: &quot;/^r(e)g[e]{1,}x+/gi&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;lastIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new RegExp('')
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;regexp&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;/(?:)/&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;regexp&quot;,
+    &quot;_description&quot;: &quot;/(?:)/&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;lastIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new RegExp('test', 'i')
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;regexp&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;/test/i&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;regexp&quot;,
+    &quot;_description&quot;: &quot;/test/i&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;lastIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: []
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 0,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 0,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [0, -0, 1, 2]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 4,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 4,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;-0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;2&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [[1],[2],[3]]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;3&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [true, 1, 1.234, 'string', /regex/]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 5,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 5,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;boolean&quot;,
+        &quot;_value&quot;: &quot;true&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1.234&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;string&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;4&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;regexp&quot;,
+        &quot;_value&quot;: &quot;/regex/&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [[null]]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;object&quot;,
+              &quot;_subtype&quot;: &quot;null&quot;,
+              &quot;_value&quot;: &quot;null&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [[undefined]]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;undefined&quot;,
+              &quot;_value&quot;: &quot;undefined&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [{a:1}, {b:2}, {c:2}]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;a&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;b&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;c&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [[{a:1}, {b:2}, {c:2}]]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 3,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;object&quot;,
+              &quot;_valuePreview&quot;: {
+                &quot;_type&quot;: &quot;object&quot;,
+                &quot;_description&quot;: &quot;Object&quot;,
+                &quot;_lossless&quot;: true,
+                &quot;_overflow&quot;: false,
+                &quot;_properties&quot;: [
+                  {
+                    &quot;_name&quot;: &quot;a&quot;,
+                    &quot;_type&quot;: &quot;number&quot;,
+                    &quot;_value&quot;: &quot;1&quot;
+                  }
+                ],
+                &quot;_entries&quot;: null
+              }
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;object&quot;,
+              &quot;_valuePreview&quot;: {
+                &quot;_type&quot;: &quot;object&quot;,
+                &quot;_description&quot;: &quot;Object&quot;,
+                &quot;_lossless&quot;: true,
+                &quot;_overflow&quot;: false,
+                &quot;_properties&quot;: [
+                  {
+                    &quot;_name&quot;: &quot;b&quot;,
+                    &quot;_type&quot;: &quot;number&quot;,
+                    &quot;_value&quot;: &quot;2&quot;
+                  }
+                ],
+                &quot;_entries&quot;: null
+              }
+            },
+            {
+              &quot;_name&quot;: &quot;2&quot;,
+              &quot;_type&quot;: &quot;object&quot;,
+              &quot;_valuePreview&quot;: {
+                &quot;_type&quot;: &quot;object&quot;,
+                &quot;_description&quot;: &quot;Object&quot;,
+                &quot;_lossless&quot;: true,
+                &quot;_overflow&quot;: false,
+                &quot;_properties&quot;: [
+                  {
+                    &quot;_name&quot;: &quot;c&quot;,
+                    &quot;_type&quot;: &quot;number&quot;,
+                    &quot;_value&quot;: &quot;2&quot;
+                  }
+                ],
+                &quot;_entries&quot;: null
+              }
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: arr = []; arr[0] = arr; arr
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_value&quot;: &quot;Array&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: arr = []; arr.length = 100; arr
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 100,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 100,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: arr = []; arr.length = 100; arr.fill(1)
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 100,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_size&quot;: 100,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;4&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;5&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;6&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;7&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;8&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;9&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: arr = []; arr.length = 100; arr[10] = 1; arr
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 100,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 100,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;10&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: a = null; (function() { a = arguments; })(1, '2', /3/); a
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Arguments&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Arguments&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;2&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;regexp&quot;,
+        &quot;_value&quot;: &quot;/3/&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new Int32Array(new ArrayBuffer(16))
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Int32Array&quot;,
+  &quot;_size&quot;: 4,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Int32Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 4,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: var intArray = new Int32Array(new ArrayBuffer(16)); for (var i = 0; i &lt; intArray.length; ++i) intArray[i] = i; intArray
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Int32Array&quot;,
+  &quot;_size&quot;: 4,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Int32Array&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 4,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;2&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;3&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: var buffer = new ArrayBuffer(10000000); var int8View = new Int8Array(buffer); int8View
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Int8Array&quot;,
+  &quot;_size&quot;: 10000000,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Int8Array&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_size&quot;: 10000000,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;4&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;5&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;6&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;7&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;8&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;9&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: ({})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: ({a: 1})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;a&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: ({a: 1, b: 0, c: -0})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;a&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;b&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;c&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;-0&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: ({a: 1, b: &quot;string&quot;, c: /regex/, d: Symbol('sym')})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;a&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;b&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;string&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;c&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;regexp&quot;,
+        &quot;_value&quot;: &quot;/regex/&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;d&quot;,
+        &quot;_type&quot;: &quot;symbol&quot;,
+        &quot;_value&quot;: &quot;Symbol(sym)&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: o = {a:1}; o.b = o; o
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;a&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;b&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;Object&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: ({a:function a(){}, b:function b(){}, get getter(){}, set setter(v){}})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;a&quot;,
+        &quot;_type&quot;: &quot;function&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;b&quot;,
+        &quot;_type&quot;: &quot;function&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;getter&quot;,
+        &quot;_type&quot;: &quot;accessor&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;setter&quot;,
+        &quot;_type&quot;: &quot;accessor&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: function Foo() {}; new Foo
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Foo&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Foo&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: var Foo2 = function() {}; new Foo2
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Foo2&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Foo2&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: var namespace = {}; namespace.Foo3 = function() {}; new namespace.Foo3
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Foo3&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Foo3&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: function Bar() { this._x = 5 }; Bar.prototype = {constructor: Bar, get x() {return this._x;}}; new Bar
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Bar&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Bar&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;_x&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;5&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;constructor&quot;,
+        &quot;_type&quot;: &quot;function&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;x&quot;,
+        &quot;_type&quot;: &quot;accessor&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: function Bar2() { this._x = 5 }; Bar.prototype = {get x() {return this._x;}}; new Bar2
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Bar2&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Bar2&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;_x&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;5&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: window.loadEvent
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Event&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Event&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;clipboardData&quot;,
+        &quot;_type&quot;: &quot;undefined&quot;,
+        &quot;_value&quot;: &quot;undefined&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;type&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;load&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;target&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;#document&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;currentTarget&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;Window&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;eventPhase&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;2&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new ArrayBuffer(16)
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;ArrayBuffer&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;ArrayBuffer&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;byteLength&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;16&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new DataView(new ArrayBuffer(16))
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;DataView&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;DataView&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;byteOffset&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;byteLength&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;16&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;buffer&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;ArrayBuffer&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: obj = {}; obj['prop'] = 1; obj[Symbol()] = 2; obj[Symbol('sym')] = 3; obj[Symbol('sym')] = 4; obj[Symbol.iterator] = Symbol(); obj
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;prop&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;Symbol()&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;2&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;Symbol(sym)&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;3&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;Symbol(sym)&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;4&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;Symbol(Symbol.iterator)&quot;,
+        &quot;_type&quot;: &quot;symbol&quot;,
+        &quot;_value&quot;: &quot;Symbol()&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: document.body
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;body&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;body&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;aLink&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;background&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;bgColor&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;link&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;text&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: div = document.createElement('div'); div.className = 'foo bar'; div
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;div.foo.bar&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;div.foo.bar&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;align&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;title&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;lang&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;translate&quot;,
+        &quot;_type&quot;: &quot;boolean&quot;,
+        &quot;_value&quot;: &quot;true&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;dir&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: span = document.createElement('span'); span.id = 'foo'; span
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;span#foo&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;span#foo&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;title&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;lang&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;translate&quot;,
+        &quot;_type&quot;: &quot;boolean&quot;,
+        &quot;_value&quot;: &quot;true&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;dir&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;tabIndex&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;-1&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: input = document.createElement('input'); input.type = 'password'; input
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;input&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;input&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;selectionStart&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;selectionEnd&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;0&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;selectionDirection&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;none&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;accept&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;alt&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: text = document.createTextNode('text content'); text
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;#text&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;#text&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;wholeText&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;text content&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;splitText&quot;,
+        &quot;_type&quot;: &quot;function&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;replaceWholeText&quot;,
+        &quot;_type&quot;: &quot;function&quot;,
+        &quot;_value&quot;: &quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;data&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;text content&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;length&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;12&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: comment = document.createComment('comment content'); comment
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;#comment&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;#comment&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;data&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;comment content&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;length&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;15&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;previousElementSibling&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;null&quot;,
+        &quot;_value&quot;: &quot;null&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;nextElementSibling&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;null&quot;,
+        &quot;_value&quot;: &quot;null&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;assignedSlot&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;null&quot;,
+        &quot;_value&quot;: &quot;null&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: svgElement = document.createElementNS('http://www.w3.org/2000/svg', 'rect'); svgElement.classList.add('test'); svgElement
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;node&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;rect.test&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;node&quot;,
+    &quot;_description&quot;: &quot;rect.test&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;x&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;SVGAnimatedLength&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;y&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;SVGAnimatedLength&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;width&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;SVGAnimatedLength&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;height&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;SVGAnimatedLength&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;rx&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_value&quot;: &quot;SVGAnimatedLength&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [document.body, div, span, input, text, comment, svgElement]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 7,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 7,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;body&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;div class=\&quot;foo bar\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;span id=\&quot;foo\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;3&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;input type=\&quot;password\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;4&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;#text \&quot;text content\&quot;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;5&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;!--comment content--&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;6&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;rect class=\&quot;test\&quot;&gt;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: document.head.children
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;HTMLCollection&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;HTMLCollection&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;meta&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;script&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;script&gt;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: document.getElementsByClassName('my-test')
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;HTMLCollection&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;HTMLCollection&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;p class=\&quot;my-test\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;p class=\&quot;my-test\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;p class=\&quot;my-test\&quot;&gt;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: document.querySelectorAll('.my-test')
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;NodeList&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;NodeList&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;p class=\&quot;my-test\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;1&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;p class=\&quot;my-test\&quot;&gt;&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;2&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;node&quot;,
+        &quot;_value&quot;: &quot;&lt;p class=\&quot;my-test\&quot;&gt;&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: error = null; try { [].x.x; } catch (e) { error = e; }; error
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;error&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;TypeError: undefined is not an object (evaluating '[].x.x')&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;error&quot;,
+    &quot;_description&quot;: &quot;TypeError: undefined is not an object (evaluating '[].x.x')&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;message&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;undefined is not an object (evaluating '[].x.x')&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;line&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;column&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;25&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;stack&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;eval code\neval@[native code]\n_evaluateOn\n_evaluateAndWrap\nevaluate&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: error = null; try { eval('if()'); } catch (e) { error = e; }; error
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;error&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;SyntaxError: Unexpected token ')'&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;error&quot;,
+    &quot;_description&quot;: &quot;SyntaxError: Unexpected token ')'&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;message&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;Unexpected token ')'&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;line&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;column&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;25&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;stack&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;eval@[native code]\neval code\neval@[native code]\n_evaluateOn\n_evaluateAndWrap\nevaluate&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: error = null; try { document.createTextNode('').splitText(100); } catch (e) { error = e; }; error
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;error&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Error: IndexSizeError: DOM Exception 1&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;error&quot;,
+    &quot;_description&quot;: &quot;Error: IndexSizeError: DOM Exception 1&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;code&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;name&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;IndexSizeError&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;message&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;IndexSizeError: DOM Exception 1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;line&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;1&quot;
+      },
+      {
+        &quot;_name&quot;: &quot;column&quot;,
+        &quot;_type&quot;: &quot;number&quot;,
+        &quot;_value&quot;: &quot;58&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new Map
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;map&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map&quot;,
+  &quot;_size&quot;: 0,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;map&quot;,
+    &quot;_description&quot;: &quot;Map&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 0,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: []
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map = new Map; map.set(1, 2); map.set('key', 'value'); map
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;map&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map&quot;,
+  &quot;_size&quot;: 2,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;map&quot;,
+    &quot;_description&quot;: &quot;Map&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 2,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;key&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;value&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map = new Map; map.set({a:1}, {b:2}); map.set(document.body, [1,2]); map
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;map&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map&quot;,
+  &quot;_size&quot;: 2,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;map&quot;,
+    &quot;_description&quot;: &quot;Map&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 2,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;a&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;b&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;node&quot;,
+          &quot;_description&quot;: &quot;body&quot;,
+          &quot;_lossless&quot;: false,
+          &quot;_overflow&quot;: true,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;aLink&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;background&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;bgColor&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;link&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;text&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map = new Map; for (var i = 0; i &lt;= 100; i++) map.set(i, i); map
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;map&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map&quot;,
+  &quot;_size&quot;: 101,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;map&quot;,
+    &quot;_description&quot;: &quot;Map&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_size&quot;: 101,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;0&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;0&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;4&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;4&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map = new Map; map.set(map, map); map
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;map&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;map&quot;,
+    &quot;_description&quot;: &quot;Map&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;map&quot;,
+          &quot;_description&quot;: &quot;Map&quot;,
+          &quot;_lossless&quot;: false,
+          &quot;_overflow&quot;: true,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [],
+          &quot;_entries&quot;: []
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;map&quot;,
+          &quot;_description&quot;: &quot;Map&quot;,
+          &quot;_lossless&quot;: false,
+          &quot;_overflow&quot;: true,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [],
+          &quot;_entries&quot;: []
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map = new WeakMap; strongKey = {id:1}; map.set(strongKey, [1,2]); map
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;weakmap&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;WeakMap&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;weakmap&quot;,
+    &quot;_description&quot;: &quot;WeakMap&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_key&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;id&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new Set
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;set&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Set&quot;,
+  &quot;_size&quot;: 0,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;set&quot;,
+    &quot;_description&quot;: &quot;Set&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 0,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: []
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: set = new Set; set.add(1); set.add(2); set.add('key'); set
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;set&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Set&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;set&quot;,
+    &quot;_description&quot;: &quot;Set&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;key&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: set = new Set; set.add({a:1}); set.add(document.body); set.add([1,2]); set
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;set&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Set&quot;,
+  &quot;_size&quot;: 3,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;set&quot;,
+    &quot;_description&quot;: &quot;Set&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 3,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;a&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;node&quot;,
+          &quot;_description&quot;: &quot;body&quot;,
+          &quot;_lossless&quot;: false,
+          &quot;_overflow&quot;: true,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;aLink&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;background&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;bgColor&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;link&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;text&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: set = new Set; for (var i = 0; i &lt;= 100; i++) set.add(i); set
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;set&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Set&quot;,
+  &quot;_size&quot;: 101,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;set&quot;,
+    &quot;_description&quot;: &quot;Set&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_size&quot;: 101,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;0&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;4&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: set = new Set; set.add(set); set
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;set&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Set&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;set&quot;,
+    &quot;_description&quot;: &quot;Set&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;set&quot;,
+          &quot;_description&quot;: &quot;Set&quot;,
+          &quot;_lossless&quot;: false,
+          &quot;_overflow&quot;: true,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [],
+          &quot;_entries&quot;: []
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: set = new WeakSet; strongKey = {id:1}; set.add(strongKey); set
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;weakset&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;WeakSet&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;weakset&quot;,
+    &quot;_description&quot;: &quot;WeakSet&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;id&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: 'a'[Symbol.iterator]()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;String Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;String Iterator&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;string&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;a&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;a&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: 'long string'[Symbol.iterator]()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;String Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;String Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;string&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;long string&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;l&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;o&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;n&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;g&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot; &quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [][Symbol.iterator]()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Array Iterator&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;array&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 0,
+          &quot;_properties&quot;: [],
+          &quot;_entries&quot;: null
+        },
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: []
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [1][Symbol.iterator]()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Array Iterator&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;array&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 1,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [1, 'two', 3, 'four', 5, 'size'][Symbol.iterator]()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Array Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;array&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_value&quot;: &quot;Array&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;two&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;four&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;5&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [1, 'two', 3, 'four', 5, 'size'].keys()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Array Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;array&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_value&quot;: &quot;Array&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;key&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;0&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;4&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: [1, 'two', 3, 'four', 5, 'size'].entries()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Array Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;array&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_value&quot;: &quot;Array&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;key+value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;0&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;two&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;3&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;3&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;four&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;4&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;5&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map = new Map; map.set(1, 2); map.set('key', 'value'); map.values()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Map Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;map&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;map&quot;,
+        &quot;_value&quot;: &quot;Map&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;value&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map.keys()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Map Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;map&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;map&quot;,
+        &quot;_value&quot;: &quot;Map&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;key&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;key&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map.entries()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Map Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;map&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;map&quot;,
+        &quot;_value&quot;: &quot;Map&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;key+value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;key&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;value&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: set = new Set; for (var i = 0; i &lt;= 100; i++) set.add(i); set.values()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Set Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Set Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;set&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;set&quot;,
+        &quot;_value&quot;: &quot;Set&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;0&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;4&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: map.entries()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Map Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Map Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;map&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;map&quot;,
+        &quot;_value&quot;: &quot;Map&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;key+value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Array&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;key&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;value&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: x = undefined; (function() { x = arguments; })(1, 'two'); x[Symbol.iterator]()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;Array Iterator&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;array&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_subtype&quot;: &quot;array&quot;,
+          &quot;_description&quot;: &quot;Arguments&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_size&quot;: 2,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;0&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;1&quot;,
+              &quot;_type&quot;: &quot;string&quot;,
+              &quot;_value&quot;: &quot;two&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;kind&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;value&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;number&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;two&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Reflect.enumerate({a:1, b:2, c:3})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;PropertyName Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;PropertyName Iterator&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;object&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;a&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;b&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;2&quot;
+            },
+            {
+              &quot;_name&quot;: &quot;c&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;3&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;a&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;b&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;c&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Reflect.enumerate([1, 2, 3, 4, 5, 6, 7])
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;iterator&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;PropertyName Iterator&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;iterator&quot;,
+    &quot;_description&quot;: &quot;PropertyName Iterator&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: true,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;object&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_subtype&quot;: &quot;array&quot;,
+        &quot;_value&quot;: &quot;Array&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: [
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;0&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;1&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;2&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;3&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      },
+      {
+        &quot;_value&quot;: {
+          &quot;_type&quot;: &quot;string&quot;,
+          &quot;_description&quot;: &quot;4&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: null,
+          &quot;_entries&quot;: null
+        }
+      }
+    ]
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: new Promise(function(){})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Promise&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Promise&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;status&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;pending&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Promise.reject()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Promise&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Promise&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;status&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;rejected&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;result&quot;,
+        &quot;_type&quot;: &quot;undefined&quot;,
+        &quot;_value&quot;: &quot;undefined&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Promise.reject('result')
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Promise&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Promise&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;status&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;rejected&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;result&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;result&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Promise.resolve()
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Promise&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Promise&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;status&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;resolved&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;result&quot;,
+        &quot;_type&quot;: &quot;undefined&quot;,
+        &quot;_value&quot;: &quot;undefined&quot;,
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Promise.resolve({result:1})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Promise&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Promise&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;status&quot;,
+        &quot;_type&quot;: &quot;string&quot;,
+        &quot;_value&quot;: &quot;resolved&quot;,
+        &quot;_internal&quot;: true
+      },
+      {
+        &quot;_name&quot;: &quot;result&quot;,
+        &quot;_type&quot;: &quot;object&quot;,
+        &quot;_valuePreview&quot;: {
+          &quot;_type&quot;: &quot;object&quot;,
+          &quot;_description&quot;: &quot;Object&quot;,
+          &quot;_lossless&quot;: true,
+          &quot;_overflow&quot;: false,
+          &quot;_properties&quot;: [
+            {
+              &quot;_name&quot;: &quot;result&quot;,
+              &quot;_type&quot;: &quot;number&quot;,
+              &quot;_value&quot;: &quot;1&quot;
+            }
+          ],
+          &quot;_entries&quot;: null
+        },
+        &quot;_internal&quot;: true
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Person = class Person { constructor(name){} get fullName(){} methodName(p1, p2){} }; Person
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_subtype&quot;: &quot;class&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;class Person&quot;,
+  &quot;_classPrototype&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+    &quot;_description&quot;: &quot;Person&quot;
+  },
+  &quot;_functionDescription&quot;: &quot;function Person(name){}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Person.prototype.methodName
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;function methodName(p1, p2){}&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: Alpha = class A { methodA(){} }; Beta = class B extends Alpha { methodB(){} }; Beta
+{
+  &quot;_type&quot;: &quot;function&quot;,
+  &quot;_subtype&quot;: &quot;class&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;class B&quot;,
+  &quot;_classPrototype&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+    &quot;_description&quot;: &quot;B&quot;
+  },
+  &quot;_functionDescription&quot;: &quot;function B() { super(...arguments); }&quot;
+}
+
+-----------------------------------------------------
+EXPRESSION: [Beta]
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_subtype&quot;: &quot;array&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Array&quot;,
+  &quot;_size&quot;: 1,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_subtype&quot;: &quot;array&quot;,
+    &quot;_description&quot;: &quot;Array&quot;,
+    &quot;_lossless&quot;: false,
+    &quot;_overflow&quot;: false,
+    &quot;_size&quot;: 1,
+    &quot;_properties&quot;: [
+      {
+        &quot;_name&quot;: &quot;0&quot;,
+        &quot;_type&quot;: &quot;function&quot;,
+        &quot;_subtype&quot;: &quot;class&quot;,
+        &quot;_value&quot;: &quot;class B&quot;
+      }
+    ],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Object.seal({})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
+-----------------------------------------------------
+EXPRESSION: Object.freeze({})
+{
+  &quot;_type&quot;: &quot;object&quot;,
+  &quot;_objectId&quot;: &quot;&lt;filtered&gt;&quot;,
+  &quot;_description&quot;: &quot;Object&quot;,
+  &quot;_preview&quot;: {
+    &quot;_type&quot;: &quot;object&quot;,
+    &quot;_description&quot;: &quot;Object&quot;,
+    &quot;_lossless&quot;: true,
+    &quot;_overflow&quot;: false,
+    &quot;_properties&quot;: [],
+    &quot;_entries&quot;: null
+  }
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -668,6 +668,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').value is HTMLSlotElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').value is HTMLSourceElement
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacmavericksjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/LayoutTests/platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -668,6 +668,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').value is HTMLSlotElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').value is HTMLSourceElement
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -668,6 +668,11 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSelectElement').configurable is true
</span><ins>+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').value is HTMLSlotElement
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'HTMLSlotElement').configurable is true
</ins><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').value is HTMLSourceElement
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'HTMLSourceElement').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/CMakeLists.txt        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -510,6 +510,7 @@
</span><span class="cx">     html/HTMLQuoteElement.idl
</span><span class="cx">     html/HTMLScriptElement.idl
</span><span class="cx">     html/HTMLSelectElement.idl
</span><ins>+    html/HTMLSlotElement.idl
</ins><span class="cx">     html/HTMLSourceElement.idl
</span><span class="cx">     html/HTMLSpanElement.idl
</span><span class="cx">     html/HTMLStyleElement.idl
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/ChangeLog        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -1,3 +1,101 @@
</span><ins>+2015-09-17  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
+
+        Add HTMLSlotElement, Element.slot, and NonDocumentTypeChildNode.assignedSlot
+        https://bugs.webkit.org/show_bug.cgi?id=149241
+
+        Reviewed by Antti Koivisto.
+
+        Implement the slotting algorithm and related features: slot element, slot attribute, and assignedSlot
+        as specified by https://w3c.github.io/webcomponents/spec/shadow/#slotting-algorithm
+        as of 8bf56e8ea5521a7a911efd1cabeb2be0d5c3ca74.
+
+        The slotting algorithm is implemented by the newly introduced SlotAssignment class which is created on
+        demand by ShadowRoot when a HTMLSlotElement is inserted into the shadow root. SlotAssignment contains
+        a HashMap of a slot name to SlotInfo structure, which holds the number of slot elements of the said name,
+        the first element if it's known, and an ordered list of the assigned nodes.
+
+        When there is exactly one slot element of a given name, &quot;element&quot; returns the slot element in O(1).
+        When another slot of the same name is inserted into the same shadow tree, we increment &quot;elementCount&quot; and
+        set &quot;element&quot; to nullptr since we don't know which slot element comes first in the tree order without O(n)
+        tree traversal, which is lazily done in resolveAllSlotElements.
+
+        Observe that SlotInfo's &quot;element&quot; can be nullptr in two occasions: (1) when there is no slot element of
+        the given name (SlotAssignment::assignSlots may insert such an entry), and (2) when there are more than
+        one slot elements of the same name and we haven't run resolveAllSlotElements.
+
+        Resolving assigned nodes, on the other hand, is always O(n) unless all assignments are up to date, and
+        lazily computed by assignSlots. This is because inserting or removing a node doesn't tell us the relative
+        ordering of the node with respect to other nodes assigned to the same slot. For example, let's say we have
+        child nodes (A, B, C, D) and (A, D) are assigned to slot Alpha and (B, C) are assigned to slot Beta. If we
+        insert a new node E between nodes B and C and this node is assigned to slot Alpha, then we must create an
+        ordered list (A, E, D) for slot Alpha. Unfortunately, determining where to insert E in this list can cost
+        O(n) child traversal in the worst case.
+
+        Tests: fast/shadow-dom/HTMLSlotElement-interface.html
+               fast/shadow-dom/NonDocumentTypeChildNode-interface-assignedSlot.html
+
+        * CMakeLists.txt:
+        * DerivedSources.cpp:
+        * DerivedSources.make:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+        * dom/Element.cpp:
+        (WebCore::Element::attributeChanged): Invalidate the slot assignments when slot attribute is changed.
+        (WebCore::Element::childrenChanged): Ditto for when a child node is inserted or removed. We can avoid it
+        when there is no default slot and only text nodes are removed or added in the future.
+        * dom/Element.idl: Added slot attribute on Element.
+        * dom/Node.cpp:
+        (WebCore::Node::assignedSlot): Added. Returns the assigned slot if the slot is in an open shadow tree.
+        * dom/Node.h:
+        * dom/NonDocumentTypeChildNode.idl: Added assignedSlot. Only expose in JS for now to avoid generating
+        the binding code for HTMLSlotElement in other languages.
+        * dom/ShadowRoot.cpp:
+        (WebCore::ShadowRoot::findAssignedSlot): Added. Forwards it to the implementation in SlotAssignment.
+        (WebCore::ShadowRoot::addSlotElementByName): Ditto.
+        (WebCore::ShadowRoot::removeSlotElementByName): Ditto.
+        (WebCore::ShadowRoot::invalidateSlotAssignments): Ditto.
+        (WebCore::ShadowRoot::assignedNodesForSlot): Ditto.
+        * dom/ShadowRoot.h:
+        (WebCore::ShadowRoot): Added m_slotAssignments as a member.
+        * dom/SlotAssignment.cpp: Added.
+        (WebCore::treatNullAsEmpty): Added. See https://w3c.github.io/webcomponents/spec/shadow/#dfn-default-slot
+        (WebCore::SlotAssignment::findAssignedSlot): Find the slot element to which a given node is assigned.
+        Since there could be multiple slot elements of the same name (or lack thereof), call findFirstSlotElement
+        to find the first slot element.
+        (WebCore::SlotAssignment::addSlotElementByName): Added. Called when a new slot element is inserted into
+        the associated shadow tree. When a slot element's name is changed, removeSlotElementByName is called on
+        with the old name before addSlotElementByName is called with the new name.
+        (WebCore::SlotAssignment::removeSlotElementByName): Ditto for removal.
+        (WebCore::SlotAssignment::assignedNodesForSlot): Added. Finds the ordered list of assigned nodes for
+        a given slot element. When there are multiple slot elements of the same name, we return the list only if
+        SlotInfo::element matches the argument. 
+        (WebCore::SlotAssignment::findFirstSlotElement): Added. Resolves SlotInfo::element if needed.
+        (WebCore::SlotAssignment::resolveAllSlotElements): Finds SlotInfo::element for all slots. We resolve all
+        slots simultaneously to avoid doing O(number of nodes) tree traversal for O(number of slots) to avoid
+        the worst case O(n^2) behavior when all nodes in the shadow tree are slot elements of the same name. 
+        (WebCore::SlotAssignment::assignSlots): Added. Computes the slot assignments by traversing each child
+        of the shadow host and adding to the appropriate SlotInfo::assignedNodes, creating a new entry if needed.
+        * dom/SlotAssignment.h: Added.
+        (WebCore::SlotAssignment::SlotAssignment):
+        (WebCore::SlotAssignment::invalidate):
+        (WebCore::SlotAssignment::SlotInfo::SlotInfo):
+        (WebCore::SlotAssignment::SlotInfo::hasSlotElements):
+        (WebCore::SlotAssignment::SlotInfo::hasDuplicatedSlotElements):
+        (WebCore::SlotAssignment::SlotInfo::shouldResolveSlotElement):
+        * html/HTMLAttributeNames.in: Added slot attribute.
+        * html/HTMLSlotElement.cpp: Added.
+        (WebCore::HTMLSlotElement::create):
+        (WebCore::HTMLSlotElement::HTMLSlotElement):
+        (WebCore::HTMLSlotElement::insertedInto): Calls addSlotElementByName.
+        (WebCore::HTMLSlotElement::removedFrom): Calls removeSlotElementByName. Because the element had already
+        been removed from the shadow tree, we can't use containingShadowRoot() to find the ShadowRoot here.
+        (WebCore::HTMLSlotElement::attributeChanged): Calls removeSlotElementByName and addSlotElementByName.
+        (WebCore::HTMLSlotElement::getDistributedNodes): Returns an ordered list of the assigned nodes.
+        * html/HTMLSlotElement.h: Added.
+        * html/HTMLSlotElement.idl: Added.
+        * html/HTMLTagNames.in: Added slot element.
+
</ins><span class="cx"> 2015-09-17  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Regression(r189881): release assertion hit in toJS(ExecState*, JSDOMGlobalObject*, DocumentFragment*)
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.cpp (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.cpp        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/DerivedSources.cpp        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -232,6 +232,7 @@
</span><span class="cx"> #include &quot;JSHTMLQuoteElement.cpp&quot;
</span><span class="cx"> #include &quot;JSHTMLScriptElement.cpp&quot;
</span><span class="cx"> #include &quot;JSHTMLSelectElement.cpp&quot;
</span><ins>+#include &quot;JSHTMLSlotElement.cpp&quot;
</ins><span class="cx"> #include &quot;JSHTMLSourceElement.cpp&quot;
</span><span class="cx"> #include &quot;JSHTMLSpanElement.cpp&quot;
</span><span class="cx"> #include &quot;JSHTMLStyleElement.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/DerivedSources.make        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -400,6 +400,7 @@
</span><span class="cx">     $(WebCore)/html/HTMLQuoteElement.idl \
</span><span class="cx">     $(WebCore)/html/HTMLScriptElement.idl \
</span><span class="cx">     $(WebCore)/html/HTMLSelectElement.idl \
</span><ins>+    $(WebCore)/html/HTMLSlotElement.idl \
</ins><span class="cx">     $(WebCore)/html/HTMLSourceElement.idl \
</span><span class="cx">     $(WebCore)/html/HTMLSpanElement.idl \
</span><span class="cx">     $(WebCore)/html/HTMLStyleElement.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -2952,6 +2952,20 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSlotElement.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSourceElement.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -16950,6 +16964,20 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\html\HTMLSelectElementWin.cpp&quot; /&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\html\HTMLSlotElement.cpp&quot;&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\html\HTMLSourceElement.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -19911,6 +19939,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLQuoteElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLScriptElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSelectElement.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSlotElement.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSourceElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSpanElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLStyleElement.h&quot; /&gt;
</span><span class="lines">@@ -22283,6 +22312,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLQuoteElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLScriptElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLSelectElement.h&quot; /&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\html\HTMLSlotElement.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLSourceElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLSpanElement.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLStyleElement.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -3882,6 +3882,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\html\HTMLSelectElementWin.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;html&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;..\html\HTMLSlotElementWin.cpp&quot;&gt;
+      &lt;Filter&gt;html&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\html\HTMLSourceElement.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;html&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -5482,6 +5485,9 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSelectElement.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><ins>+    &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSlotElement.cpp&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClCompile&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSourceElement.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -11042,6 +11048,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLSelectElement.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;html&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;..\html\HTMLSlotElement.h&quot;&gt;
+      &lt;Filter&gt;html&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\html\HTMLSourceElement.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;html&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -12868,6 +12877,9 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSelectElement.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><ins>+    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSlotElement.h&quot;&gt;
+      &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
+    &lt;/ClInclude&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\JSHTMLSourceElement.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;DerivedSources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -3848,7 +3848,13 @@
</span><span class="cx">                 9B417064125662B3006B28FC /* ApplyBlockElementCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B417062125662B3006B28FC /* ApplyBlockElementCommand.h */; };
</span><span class="cx">                 9B417065125662B3006B28FC /* ApplyBlockElementCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B417063125662B3006B28FC /* ApplyBlockElementCommand.cpp */; };
</span><span class="cx">                 9B50B1DE17CD4C0F0087F63C /* FormNamedItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B50B1DC17CD4C0F0087F63C /* FormNamedItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><ins>+                9B532EA31BA928570038A827 /* SlotAssignment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B532EA11BA928570038A827 /* SlotAssignment.cpp */; };
+                9B532EA41BA928570038A827 /* SlotAssignment.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B532EA21BA928570038A827 /* SlotAssignment.h */; };
</ins><span class="cx">                 9B55EEE91B3E8898005342BC /* EditorCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B55EEE81B3E8898005342BC /* EditorCocoa.mm */; };
</span><ins>+                9B69D3B41B98FFE900E3512B /* HTMLSlotElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B69D3B21B98FFE900E3512B /* HTMLSlotElement.cpp */; };
+                9B69D3B51B98FFE900E3512B /* HTMLSlotElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B69D3B31B98FFE900E3512B /* HTMLSlotElement.h */; };
+                9B69D3B81B99100700E3512B /* JSHTMLSlotElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B69D3B61B99100700E3512B /* JSHTMLSlotElement.cpp */; };
+                9B69D3B91B99100700E3512B /* JSHTMLSlotElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B69D3B71B99100700E3512B /* JSHTMLSlotElement.h */; };
</ins><span class="cx">                 9B6C41531344949000085B62 /* StringWithDirection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B6C41521344949000085B62 /* StringWithDirection.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 9BA273F4172206BB0097CE47 /* LogicalSelectionOffsetCaches.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BA273F3172206BB0097CE47 /* LogicalSelectionOffsetCaches.h */; };
</span><span class="cx">                 9BAB6C6C12550631001626D4 /* EditingStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAB6C6A12550631001626D4 /* EditingStyle.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -11249,8 +11255,15 @@
</span><span class="cx">                 9B417062125662B3006B28FC /* ApplyBlockElementCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplyBlockElementCommand.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9B417063125662B3006B28FC /* ApplyBlockElementCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ApplyBlockElementCommand.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9B50B1DC17CD4C0F0087F63C /* FormNamedItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormNamedItem.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                9B532EA11BA928570038A827 /* SlotAssignment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SlotAssignment.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9B532EA21BA928570038A827 /* SlotAssignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotAssignment.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 9B55EEE81B3E8898005342BC /* EditorCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EditorCocoa.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9B55EEEA1B3F3FEF005342BC /* EditorCocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EditorCocoa.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                9B69D3B11B98FF0A00E3512B /* HTMLSlotElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HTMLSlotElement.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9B69D3B21B98FFE900E3512B /* HTMLSlotElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLSlotElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9B69D3B31B98FFE900E3512B /* HTMLSlotElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLSlotElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9B69D3B61B99100700E3512B /* JSHTMLSlotElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLSlotElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                9B69D3B71B99100700E3512B /* JSHTMLSlotElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLSlotElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 9B6BC9601B975966005AE1F0 /* JSShadowRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSShadowRoot.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9B6BC9611B975966005AE1F0 /* JSShadowRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSShadowRoot.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 9B6C41521344949000085B62 /* StringWithDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringWithDirection.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -18541,6 +18554,9 @@
</span><span class="cx">                                 A81369BD097374F500D74463 /* HTMLSelectElement.cpp */,
</span><span class="cx">                                 A81369BC097374F500D74463 /* HTMLSelectElement.h */,
</span><span class="cx">                                 855542990AA4938800BA89F2 /* HTMLSelectElement.idl */,
</span><ins>+                                9B69D3B11B98FF0A00E3512B /* HTMLSlotElement.idl */,
+                                9B69D3B21B98FFE900E3512B /* HTMLSlotElement.cpp */,
+                                9B69D3B31B98FFE900E3512B /* HTMLSlotElement.h */,
</ins><span class="cx">                                 E44613950CD6331000FADA75 /* HTMLSourceElement.cpp */,
</span><span class="cx">                                 E44613960CD6331000FADA75 /* HTMLSourceElement.h */,
</span><span class="cx">                                 E44613970CD6331000FADA75 /* HTMLSourceElement.idl */,
</span><span class="lines">@@ -19305,6 +19321,8 @@
</span><span class="cx">                 A83B79080CCAFF2B000B0825 /* HTML */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                9B69D3B61B99100700E3512B /* JSHTMLSlotElement.cpp */,
+                                9B69D3B71B99100700E3512B /* JSHTMLSlotElement.h */,
</ins><span class="cx">                                 31A795C41888BAD100382F90 /* JSANGLEInstancedArrays.cpp */,
</span><span class="cx">                                 31A795C51888BAD100382F90 /* JSANGLEInstancedArrays.h */,
</span><span class="cx">                                 BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */,
</span><span class="lines">@@ -23577,6 +23595,8 @@
</span><span class="cx">                                 A6D169631346B4C1000EB770 /* ShadowRoot.h */,
</span><span class="cx">                                 9B19B67E1B964E5200348745 /* ShadowRoot.idl */,
</span><span class="cx">                                 31741AAB16635E45008A5B7E /* SimulatedClickOptions.h */,
</span><ins>+                                9B532EA11BA928570038A827 /* SlotAssignment.cpp */,
+                                9B532EA21BA928570038A827 /* SlotAssignment.h */,
</ins><span class="cx">                                 D01A27AB10C9BFD800026A42 /* SpaceSplitString.cpp */,
</span><span class="cx">                                 D01A27AC10C9BFD800026A42 /* SpaceSplitString.h */,
</span><span class="cx">                                 BC7FA62C0D1F0EFF00DB22A9 /* StaticNodeList.cpp */,
</span><span class="lines">@@ -26463,6 +26483,7 @@
</span><span class="cx">                                 379E371713736A6600B9E919 /* QuotedPrintable.h in Headers */,
</span><span class="cx">                                 5A574F29131DB96D00471B88 /* QuotesData.h in Headers */,
</span><span class="cx">                                 B22279720D00BF220071B782 /* RadialGradientAttributes.h in Headers */,
</span><ins>+                                9B69D3B51B98FFE900E3512B /* HTMLSlotElement.h in Headers */,
</ins><span class="cx">                                 F55B3DCC1251F12D003EF269 /* RadioInputType.h in Headers */,
</span><span class="cx">                                 B658FFA61522EFAA00DD5595 /* RadioNodeList.h in Headers */,
</span><span class="cx">                                 93F1991808245E59001E9ABC /* Range.h in Headers */,
</span><span class="lines">@@ -27361,6 +27382,7 @@
</span><span class="cx">                                 078E093017D14D1C00420AA1 /* UserMediaRequest.h in Headers */,
</span><span class="cx">                                 7C3B79721908757B00B47A2D /* UserMessageHandler.h in Headers */,
</span><span class="cx">                                 7CE68345192143A800F4D928 /* UserMessageHandlerDescriptor.h in Headers */,
</span><ins>+                                9B532EA41BA928570038A827 /* SlotAssignment.h in Headers */,
</ins><span class="cx">                                 7CE683471921821500F4D928 /* UserMessageHandlerDescriptorTypes.h in Headers */,
</span><span class="cx">                                 7C73FB08191EF417007DE061 /* UserMessageHandlersNamespace.h in Headers */,
</span><span class="cx">                                 BCA2B061105047600043BD1C /* UserScript.h in Headers */,
</span><span class="lines">@@ -27533,6 +27555,7 @@
</span><span class="cx">                                 5D21A80313ECE5DF00BB7064 /* WebVTTParser.h in Headers */,
</span><span class="cx">                                 B10B6980140C174000BC1C26 /* WebVTTToken.h in Headers */,
</span><span class="cx">                                 B10B6982140C174000BC1C26 /* WebVTTTokenizer.h in Headers */,
</span><ins>+                                9B69D3B91B99100700E3512B /* JSHTMLSlotElement.h in Headers */,
</ins><span class="cx">                                 CD8203101395ACE700F956C6 /* WebWindowAnimation.h in Headers */,
</span><span class="cx">                                 A91C9FC31B659A6700AFFD54 /* AccessibilityTreeItem.h in Headers */,
</span><span class="cx">                                 F55B3DE01251F12D003EF269 /* WeekInputType.h in Headers */,
</span><span class="lines">@@ -28088,6 +28111,7 @@
</span><span class="cx">                                 E1A8E56617552B2A007488E7 /* CFURLExtras.cpp in Sources */,
</span><span class="cx">                                 97BC69DC1505F076001B74AC /* ChangeVersionWrapper.cpp in Sources */,
</span><span class="cx">                                 FD315FFE12B0267600C1A359 /* ChannelMergerNode.cpp in Sources */,
</span><ins>+                                9B532EA31BA928570038A827 /* SlotAssignment.cpp in Sources */,
</ins><span class="cx">                                 FD31600112B0267600C1A359 /* ChannelSplitterNode.cpp in Sources */,
</span><span class="cx">                                 6550B69F099DF0270090D781 /* CharacterData.cpp in Sources */,
</span><span class="cx">                                 9326DC0C09DAD5D600AFC847 /* CharsetData.cpp in Sources */,
</span><span class="lines">@@ -28723,6 +28747,7 @@
</span><span class="cx">                                 FBC220DF1237FBEB00BCF788 /* GraphicsContext3DOpenGL.cpp in Sources */,
</span><span class="cx">                                 96ABA42314BCB80E00D56204 /* GraphicsContext3DOpenGLCommon.cpp in Sources */,
</span><span class="cx">                                 B2ED97710B1F55CE00257D0F /* GraphicsContextCG.cpp in Sources */,
</span><ins>+                                9B69D3B81B99100700E3512B /* JSHTMLSlotElement.cpp in Sources */,
</ins><span class="cx">                                 B277B4040B22F37C0004BEC6 /* GraphicsContextMac.mm in Sources */,
</span><span class="cx">                                 0F580B0C0F12A2690051D689 /* GraphicsLayer.cpp in Sources */,
</span><span class="cx">                                 499B3ED6128CD31400E726C2 /* GraphicsLayerCA.cpp in Sources */,
</span><span class="lines">@@ -28855,6 +28880,7 @@
</span><span class="cx">                                 D66817FA166FE6D700FA07B4 /* HTMLTemplateElement.cpp in Sources */,
</span><span class="cx">                                 A81369D7097374F600D74463 /* HTMLTextAreaElement.cpp in Sources */,
</span><span class="cx">                                 9BC6C21C13CCC97B008E0337 /* HTMLTextFormControlElement.cpp in Sources */,
</span><ins>+                                9B69D3B41B98FFE900E3512B /* HTMLSlotElement.cpp in Sources */,
</ins><span class="cx">                                 A871DC290A15205700B12A68 /* HTMLTitleElement.cpp in Sources */,
</span><span class="cx">                                 977B3877122883E900B81FF8 /* HTMLTokenizer.cpp in Sources */,
</span><span class="cx">                                 0707568B142262D600414161 /* HTMLTrackElement.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.cpp (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.cpp        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/Element.cpp        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -1236,6 +1236,14 @@
</span><span class="cx">             elementData()-&gt;setHasNameAttribute(!newValue.isNull());
</span><span class="cx">         else if (name == HTMLNames::pseudoAttr)
</span><span class="cx">             shouldInvalidateStyle |= testShouldInvalidateStyle &amp;&amp; isInShadowTree();
</span><ins>+#if ENABLE(SHADOW_DOM)
+        else if (name == HTMLNames::slotAttr) {
+            if (auto* parent = parentElement()) {
+                if (auto* shadowRoot = parent-&gt;shadowRoot())
+                    shadowRoot-&gt;invalidateSlotAssignments();
+            }
+        }
+#endif
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     parseAttribute(name, newValue);
</span><span class="lines">@@ -1851,6 +1859,9 @@
</span><span class="cx">     if (ShadowRoot* shadowRoot = this-&gt;shadowRoot()) {
</span><span class="cx">         if (auto* distributor = shadowRoot-&gt;distributor())
</span><span class="cx">             distributor-&gt;invalidateDistribution(this);
</span><ins>+#if ENABLE(SHADOW_DOM)
+        shadowRoot-&gt;invalidateSlotAssignments();
+#endif
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomElementidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Element.idl (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Element.idl        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/Element.idl        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -170,6 +170,7 @@
</span><span class="cx"> #if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
</span><span class="cx">     [Conditional=SHADOW_DOM, RaisesException] ShadowRoot attachShadow(Dictionary options);
</span><span class="cx">     [Conditional=SHADOW_DOM, ImplementedAs=bindingShadowRoot] readonly attribute ShadowRoot shadowRoot;
</span><ins>+    [Conditional=SHADOW_DOM, Reflect] attribute DOMString slot;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // Event Handlers
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.cpp (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.cpp        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/Node.cpp        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include &quot;HTMLCollection.h&quot;
</span><span class="cx"> #include &quot;HTMLElement.h&quot;
</span><span class="cx"> #include &quot;HTMLImageElement.h&quot;
</span><ins>+#include &quot;HTMLSlotElement.h&quot;
</ins><span class="cx"> #include &quot;HTMLStyleElement.h&quot;
</span><span class="cx"> #include &quot;InsertionPoint.h&quot;
</span><span class="cx"> #include &quot;InspectorController.h&quot;
</span><span class="lines">@@ -1071,6 +1072,21 @@
</span><span class="cx">     return is&lt;ShadowRoot&gt;(root) ? downcast&lt;ShadowRoot&gt;(&amp;root) : nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(SHADOW_DOM)
+HTMLSlotElement* Node::assignedSlot() const
+{
+    auto* parent = parentElement();
+    if (!parent)
+        return nullptr;
+
+    auto* shadowRoot = parent-&gt;shadowRoot();
+    if (!shadowRoot || shadowRoot-&gt;type() != ShadowRoot::Type::Open)
+        return nullptr;
+
+    return shadowRoot-&gt;findAssignedSlot(*this);
+}
+#endif
+
</ins><span class="cx"> bool Node::isInUserAgentShadowTree() const
</span><span class="cx"> {
</span><span class="cx">     auto* shadowRoot = containingShadowRoot();
</span></span></pre></div>
<a id="trunkSourceWebCoredomNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Node.h (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Node.h        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/Node.h        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -54,6 +54,7 @@
</span><span class="cx"> class Frame;
</span><span class="cx"> class HTMLInputElement;
</span><span class="cx"> class HTMLQualifiedName;
</span><ins>+class HTMLSlotElement;
</ins><span class="cx"> class IntRect;
</span><span class="cx"> class KeyboardEvent;
</span><span class="cx"> class MathMLQualifiedName;
</span><span class="lines">@@ -287,6 +288,10 @@
</span><span class="cx">     ShadowRoot* containingShadowRoot() const;
</span><span class="cx">     ShadowRoot* shadowRoot() const;
</span><span class="cx"> 
</span><ins>+#if ENABLE(SHADOW_DOM)
+    HTMLSlotElement* assignedSlot() const;
+#endif
+
</ins><span class="cx">     // Returns null, a child of ShadowRoot, or a legacy shadow root.
</span><span class="cx">     Node* nonBoundaryShadowTreeRootNode();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomNonDocumentTypeChildNodeidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/NonDocumentTypeChildNode.idl (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/NonDocumentTypeChildNode.idl        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/NonDocumentTypeChildNode.idl        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -30,4 +30,8 @@
</span><span class="cx"> ] interface NonDocumentTypeChildNode {
</span><span class="cx">     readonly attribute Element previousElementSibling;
</span><span class="cx">     readonly attribute Element nextElementSibling;
</span><ins>+
+#if defined(LANGUAGE_JAVASCRIPT) &amp;&amp; LANGUAGE_JAVASCRIPT
+    [Conditional=SHADOW_DOM] readonly attribute HTMLSlotElement assignedSlot;
+#endif
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoredomShadowRootcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.cpp (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.cpp        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/ShadowRoot.cpp        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -31,6 +31,7 @@
</span><span class="cx"> #include &quot;InsertionPoint.h&quot;
</span><span class="cx"> #include &quot;RenderElement.h&quot;
</span><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><ins>+#include &quot;SlotAssignment.h&quot;
</ins><span class="cx"> #include &quot;StyleResolver.h&quot;
</span><span class="cx"> #include &quot;markup.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -39,6 +40,9 @@
</span><span class="cx"> struct SameSizeAsShadowRoot : public DocumentFragment, public TreeScope {
</span><span class="cx">     unsigned countersAndFlags[1];
</span><span class="cx">     void* host;
</span><ins>+#if ENABLE(SHADOW_DOM)
+    void* slotAssignment;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> COMPILE_ASSERT(sizeof(ShadowRoot) == sizeof(SameSizeAsShadowRoot), shadowroot_should_stay_small);
</span><span class="lines">@@ -128,4 +132,41 @@
</span><span class="cx">         node-&gt;removeAllEventListeners();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+#if ENABLE(SHADOW_DOM)
+
+HTMLSlotElement* ShadowRoot::findAssignedSlot(const Node&amp; node)
+{
+    if (!m_slotAssignments)
+        return nullptr;
+    return m_slotAssignments-&gt;findAssignedSlot(node, *this);
</ins><span class="cx"> }
</span><ins>+
+void ShadowRoot::addSlotElementByName(const AtomicString&amp; name, HTMLSlotElement&amp; slot)
+{
+    if (!m_slotAssignments)
+        m_slotAssignments = std::make_unique&lt;SlotAssignment&gt;();
+
+    return m_slotAssignments-&gt;addSlotElementByName(name, slot);
+}
+
+void ShadowRoot::removeSlotElementByName(const AtomicString&amp; name, HTMLSlotElement&amp; slot)
+{
+    return m_slotAssignments-&gt;removeSlotElementByName(name, slot);
+}
+
+void ShadowRoot::invalidateSlotAssignments()
+{
+    if (m_slotAssignments)
+        m_slotAssignments-&gt;invalidate();
+}
+
+const Vector&lt;Node*&gt;* ShadowRoot::assignedNodesForSlot(const HTMLSlotElement&amp; slot)
+{
+    if (!m_slotAssignments)
+        return nullptr;
+    return m_slotAssignments-&gt;assignedNodesForSlot(slot, *this);
+}
+
+#endif
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoredomShadowRooth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ShadowRoot.h (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ShadowRoot.h        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/dom/ShadowRoot.h        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -37,6 +37,8 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> class ContentDistributor;
</span><ins>+class HTMLSlotElement;
+class SlotAssignment;
</ins><span class="cx"> 
</span><span class="cx"> class ShadowRoot : public DocumentFragment, public TreeScope {
</span><span class="cx"> public:
</span><span class="lines">@@ -72,6 +74,17 @@
</span><span class="cx"> 
</span><span class="cx">     virtual ContentDistributor* distributor() { return nullptr; }
</span><span class="cx"> 
</span><ins>+#if ENABLE(SHADOW_DOM)
+    HTMLSlotElement* findAssignedSlot(const Node&amp;);
+
+    void addSlotElementByName(const AtomicString&amp;, HTMLSlotElement&amp;);
+    void removeSlotElementByName(const AtomicString&amp;, HTMLSlotElement&amp;);
+
+    void invalidateSlotAssignments();
+
+    const Vector&lt;Node*&gt;* assignedNodesForSlot(const HTMLSlotElement&amp;);
+#endif
+
</ins><span class="cx"> protected:
</span><span class="cx">     ShadowRoot(Document&amp;, Type);
</span><span class="cx"> 
</span><span class="lines">@@ -87,6 +100,10 @@
</span><span class="cx">     Type m_type;
</span><span class="cx"> 
</span><span class="cx">     Element* m_host;
</span><ins>+
+#if ENABLE(SHADOW_DOM)
+    std::unique_ptr&lt;SlotAssignment&gt; m_slotAssignments;
+#endif
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline Element* ShadowRoot::activeElement() const
</span></span></pre></div>
<a id="trunkSourceWebCoredomSlotAssignmentcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/dom/SlotAssignment.cpp (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SlotAssignment.cpp                                (rev 0)
+++ trunk/Source/WebCore/dom/SlotAssignment.cpp        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,200 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;SlotAssignment.h&quot;
+
+#if ENABLE(SHADOW_DOM)
+
+#include &quot;HTMLSlotElement.h&quot;
+#include &quot;TypedElementDescendantIterator.h&quot;
+
+namespace WebCore {
+
+using namespace HTMLNames;
+
+static const AtomicString&amp; treatNullAsEmpty(const AtomicString&amp; name)
+{
+    return name == nullAtom ? emptyAtom : name;
+}
+
+HTMLSlotElement* SlotAssignment::findAssignedSlot(const Node&amp; node, ShadowRoot&amp; shadowRoot)
+{
+    const AtomicString&amp; name = is&lt;Element&gt;(node) ? downcast&lt;Element&gt;(node).fastGetAttribute(slotAttr) : emptyAtom;
+
+    auto it = m_slots.find(treatNullAsEmpty(name));
+    if (it == m_slots.end())
+        return nullptr;
+
+    return findFirstSlotElement(*it-&gt;value, shadowRoot);
+}
+
+void SlotAssignment::addSlotElementByName(const AtomicString&amp; name, HTMLSlotElement&amp; slotElement)
+{
+#ifndef NDEBUG
+    ASSERT(!m_slotElementsForConsistencyCheck.contains(&amp;slotElement));
+    m_slotElementsForConsistencyCheck.add(&amp;slotElement);
+#endif
+
+    auto addResult = m_slots.add(treatNullAsEmpty(name), std::unique_ptr&lt;SlotInfo&gt;());
+    if (addResult.isNewEntry) {
+        addResult.iterator-&gt;value = std::make_unique&lt;SlotInfo&gt;(slotElement);
+        return;
+    }
+
+    auto&amp; slotInfo = *addResult.iterator-&gt;value;
+
+    if (!slotInfo.hasSlotElements())
+        slotInfo.element = &amp;slotElement;
+    else {
+        slotInfo.element = nullptr;
+#ifndef NDEBUG
+        m_needsToResolveSlotElements = true;
+#endif
+    }
+    slotInfo.elementCount++;
+}
+
+void SlotAssignment::removeSlotElementByName(const AtomicString&amp; name, HTMLSlotElement&amp; slotElement)
+{
+#ifndef NDEBUG
+    ASSERT(m_slotElementsForConsistencyCheck.contains(&amp;slotElement));
+    m_slotElementsForConsistencyCheck.remove(&amp;slotElement);
+#endif
+
+    auto it = m_slots.find(treatNullAsEmpty(name));
+    RELEASE_ASSERT(it != m_slots.end());
+
+    auto&amp; slotInfo = *it-&gt;value;
+    RELEASE_ASSERT(slotInfo.hasSlotElements());
+
+    slotInfo.elementCount--;
+    if (slotInfo.element == &amp;slotElement) {
+        slotInfo.element = nullptr;
+#ifndef NDEBUG
+        m_needsToResolveSlotElements = true;
+#endif
+    }
+    ASSERT(slotInfo.element || m_needsToResolveSlotElements);
+}
+
+const Vector&lt;Node*&gt;* SlotAssignment::assignedNodesForSlot(const HTMLSlotElement&amp; slotElement, ShadowRoot&amp; shadowRoot)
+{
+    if (!m_slotAssignmentsIsValid)
+        assignSlots(shadowRoot);
+
+    const AtomicString&amp; slotName = slotElement.fastGetAttribute(nameAttr);
+    auto it = m_slots.find(treatNullAsEmpty(slotName));
+    if (it == m_slots.end())
+        return nullptr;
+
+    auto&amp; slotInfo = *it-&gt;value;
+
+    if (!slotInfo.assignedNodes.size())
+        return nullptr;
+
+    RELEASE_ASSERT(slotInfo.hasSlotElements());
+    if (slotInfo.hasDuplicatedSlotElements() &amp;&amp; findFirstSlotElement(slotInfo, shadowRoot) != &amp;slotElement)
+        return nullptr;
+
+    return &amp;slotInfo.assignedNodes;
+}
+
+HTMLSlotElement* SlotAssignment::findFirstSlotElement(SlotInfo&amp; slotInfo, ShadowRoot&amp; shadowRoot)
+{
+    if (slotInfo.shouldResolveSlotElement())
+        resolveAllSlotElements(shadowRoot);
+
+#ifndef NDEBUG
+    ASSERT(!slotInfo.element || m_slotElementsForConsistencyCheck.contains(slotInfo.element));
+#endif
+
+    return slotInfo.element;
+}
+
+void SlotAssignment::resolveAllSlotElements(ShadowRoot&amp; shadowRoot)
+{
+#ifndef NDEBUG
+    ASSERT(m_needsToResolveSlotElements);
+    m_needsToResolveSlotElements = false;
+#endif
+
+    // FIXME: It's inefficient to reset all values. We should be able to void this in common case.
+    for (auto&amp; entry : m_slots)
+        entry.value-&gt;element = nullptr;
+
+    unsigned slotCount = m_slots.size();
+    for (auto&amp; slotElement : descendantsOfType&lt;HTMLSlotElement&gt;(shadowRoot)) {
+        const AtomicString&amp; slotName = slotElement.fastGetAttribute(nameAttr);
+
+        auto it = m_slots.find(treatNullAsEmpty(slotName));
+        RELEASE_ASSERT(it != m_slots.end());
+
+        SlotInfo&amp; slotInfo = *it-&gt;value;
+        bool hasSeenSlotWithSameName = !!slotInfo.element;
+        if (hasSeenSlotWithSameName)
+            continue;
+
+        slotInfo.element = &amp;slotElement;
+        slotCount--;
+        if (!slotCount)
+            break;
+    }
+}
+
+void SlotAssignment::assignSlots(ShadowRoot&amp; shadowRoot)
+{
+    ASSERT(!m_slotAssignmentsIsValid);
+    m_slotAssignmentsIsValid = true;
+
+    auto* host = shadowRoot.host();
+    RELEASE_ASSERT(host);
+
+    for (auto&amp; entry : m_slots)
+        entry.value-&gt;assignedNodes.shrink(0);
+
+    auto defaultSlotEntry = m_slots.find(emptyAtom);
+
+    for (Node* child = host-&gt;firstChild(); child; child = child-&gt;nextSibling()) {
+        if (is&lt;Element&gt;(child)) {
+            auto&amp; slotName = downcast&lt;Element&gt;(*child).fastGetAttribute(slotAttr);
+            if (!slotName.isNull()) {
+                auto addResult = m_slots.add(treatNullAsEmpty(slotName), std::make_unique&lt;SlotInfo&gt;());
+                addResult.iterator-&gt;value-&gt;assignedNodes.append(child);
+                continue;
+            }
+        }
+        if (defaultSlotEntry != m_slots.end())
+            defaultSlotEntry-&gt;value-&gt;assignedNodes.append(child);
+    }
+
+    for (auto&amp; entry : m_slots)
+        entry.value-&gt;assignedNodes.shrinkToFit();
+}
+
+}
+
+#endif
+
</ins></span></pre></div>
<a id="trunkSourceWebCoredomSlotAssignmenth"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/dom/SlotAssignment.h (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SlotAssignment.h                                (rev 0)
+++ trunk/Source/WebCore/dom/SlotAssignment.h        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SlotAssignment_h
+#define SlotAssignment_h
+
+#if ENABLE(SHADOW_DOM)
+
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/HashSet.h&gt;
+#include &lt;wtf/Vector.h&gt;
+#include &lt;wtf/text/AtomicString.h&gt;
+#include &lt;wtf/text/AtomicStringHash.h&gt;
+
+namespace WebCore {
+
+class HTMLSlotElement;
+class Node;
+class ShadowRoot;
+
+class SlotAssignment {
+    WTF_MAKE_NONCOPYABLE(SlotAssignment);
+public:
+    SlotAssignment() { }
+
+    HTMLSlotElement* findAssignedSlot(const Node&amp;, ShadowRoot&amp;);
+
+    void addSlotElementByName(const AtomicString&amp;, HTMLSlotElement&amp;);
+    void removeSlotElementByName(const AtomicString&amp;, HTMLSlotElement&amp;);
+
+    const Vector&lt;Node*&gt;* assignedNodesForSlot(const HTMLSlotElement&amp;, ShadowRoot&amp;);
+
+    void invalidate() { m_slotAssignmentsIsValid = false; }
+
+private:
+    struct SlotInfo {
+        SlotInfo() { }
+        SlotInfo(HTMLSlotElement&amp; slotElement)
+            : element(&amp;slotElement)
+            , elementCount(1)
+        { }
+
+        bool hasSlotElements() { return !!elementCount; }
+        bool hasDuplicatedSlotElements() { return elementCount &gt; 1; }
+        bool shouldResolveSlotElement() { return !element &amp;&amp; elementCount; }
+
+        HTMLSlotElement* element { nullptr };
+        unsigned elementCount { 0 };
+        Vector&lt;Node*&gt; assignedNodes;
+    };
+
+    HTMLSlotElement* findFirstSlotElement(SlotInfo&amp;, ShadowRoot&amp;);
+    void resolveAllSlotElements(ShadowRoot&amp;);
+    void assignSlots(ShadowRoot&amp;);
+
+    HashMap&lt;AtomicString, std::unique_ptr&lt;SlotInfo&gt;&gt; m_slots;
+
+#ifndef NDEBUG
+    HashSet&lt;HTMLSlotElement*&gt; m_slotElementsForConsistencyCheck;
+    bool m_needsToResolveSlotElements { false };
+#endif
+
+    bool m_slotAssignmentsIsValid { false };
+};
+
+}
+
+#endif
+
+#endif /* SlotAssignment_h */
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLAttributeNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLAttributeNames.in (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLAttributeNames.in        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/html/HTMLAttributeNames.in        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -322,6 +322,7 @@
</span><span class="cx"> shape
</span><span class="cx"> size
</span><span class="cx"> sizes
</span><ins>+slot
</ins><span class="cx"> sortable
</span><span class="cx"> sortdirection
</span><span class="cx"> span
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSlotElementcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/html/HTMLSlotElement.cpp (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSlotElement.cpp                                (rev 0)
+++ trunk/Source/WebCore/html/HTMLSlotElement.cpp        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,95 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+#include &quot;HTMLSlotElement.h&quot;
+
+#include &quot;ElementChildIterator.h&quot;
+#include &quot;HTMLNames.h&quot;
+
+namespace WebCore {
+
+using namespace HTMLNames;
+
+Ref&lt;HTMLSlotElement&gt; HTMLSlotElement::create(const QualifiedName&amp; tagName, Document&amp; document)
+{
+    return adoptRef(*new HTMLSlotElement(tagName, document));
+}
+
+HTMLSlotElement::HTMLSlotElement(const QualifiedName&amp; tagName, Document&amp; document)
+    : HTMLElement(tagName, document)
+{
+    ASSERT(hasTagName(slotTag));
+}
+
+HTMLSlotElement::InsertionNotificationRequest HTMLSlotElement::insertedInto(ContainerNode&amp; insertionPoint)
+{
+    auto insertionResult = HTMLElement::insertedInto(insertionPoint);
+    ASSERT_UNUSED(insertionResult, insertionResult == InsertionDone);
+
+    if (auto shadowRoot = containingShadowRoot())
+        shadowRoot-&gt;addSlotElementByName(fastGetAttribute(nameAttr), *this);
+
+    return InsertionDone;
+}
+
+void HTMLSlotElement::removedFrom(ContainerNode&amp; insertionPoint)
+{
+    // Can't call containingShadowRoot() here since this node has already been disconnected from the parent.
+    if (isInShadowTree()) {
+        auto&amp; oldShadowRoot = downcast&lt;ShadowRoot&gt;(insertionPoint.treeScope().rootNode());
+        oldShadowRoot.removeSlotElementByName(fastGetAttribute(nameAttr), *this);
+    }
+
+    HTMLElement::removedFrom(insertionPoint);
+}
+
+void HTMLSlotElement::attributeChanged(const QualifiedName&amp; name, const AtomicString&amp; oldValue, const AtomicString&amp; newValue, AttributeModificationReason reason)
+{
+    HTMLElement::attributeChanged(name, oldValue, newValue, reason);
+
+    if (name == nameAttr) {
+        if (auto* shadowRoot = containingShadowRoot()) {
+            shadowRoot-&gt;removeSlotElementByName(oldValue, *this);
+            shadowRoot-&gt;addSlotElementByName(newValue, *this);
+        }
+    }
+}
+
+Vector&lt;RefPtr&lt;Node&gt;&gt; HTMLSlotElement::getDistributedNodes() const
+{
+    Vector&lt;RefPtr&lt;Node&gt;&gt; distributedNodes;
+
+    if (auto shadowRoot = containingShadowRoot()) {
+        if (auto assignedNodes = shadowRoot-&gt;assignedNodesForSlot(*this)) {
+            for (auto* node : *assignedNodes)
+                distributedNodes.append(node);
+        }
+    }
+
+    return distributedNodes;
+}
+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSlotElementh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/html/HTMLSlotElement.h (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSlotElement.h                                (rev 0)
+++ trunk/Source/WebCore/html/HTMLSlotElement.h        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef HTMLSlotElement_h
+#define HTMLSlotElement_h
+
+#include &quot;HTMLElement.h&quot;
+#include &quot;InsertionPoint.h&quot;
+#include &quot;Range.h&quot;
+
+namespace WebCore {
+
+class HTMLSlotElement final : public HTMLElement {
+public:
+    static Ref&lt;HTMLSlotElement&gt; create(const QualifiedName&amp;, Document&amp;);
+
+    Vector&lt;RefPtr&lt;Node&gt;&gt; getDistributedNodes() const;
+
+private:
+    HTMLSlotElement(const QualifiedName&amp;, Document&amp;);
+
+    virtual InsertionNotificationRequest insertedInto(ContainerNode&amp;) override;
+    virtual void removedFrom(ContainerNode&amp;) override;
+    virtual void attributeChanged(const QualifiedName&amp;, const AtomicString&amp; oldValue, const AtomicString&amp; newValue, AttributeModificationReason) override;
+};
+
+}
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLSlotElementidl"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/html/HTMLSlotElement.idl (0 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLSlotElement.idl                                (rev 0)
+++ trunk/Source/WebCore/html/HTMLSlotElement.idl        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// https://w3c.github.io/webcomponents/spec/shadow/#idl-def-HTMLSlotElement
+[
+    Conditional=SHADOW_DOM,
+    JSGenerateToNativeObject
+] interface HTMLSlotElement : HTMLElement {
+
+    [Reflect] attribute DOMString name;
+    sequence&lt;Node&gt; getDistributedNodes();
+
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLTagNamesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLTagNames.in (189949 => 189950)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLTagNames.in        2015-09-18 00:46:12 UTC (rev 189949)
+++ trunk/Source/WebCore/html/HTMLTagNames.in        2015-09-18 00:47:09 UTC (rev 189950)
</span><span class="lines">@@ -111,6 +111,7 @@
</span><span class="cx"> script constructorNeedsCreatedByParser
</span><span class="cx"> section interfaceName=HTMLElement
</span><span class="cx"> select constructorNeedsFormElement
</span><ins>+slot conditional=SHADOW_DOM
</ins><span class="cx"> small interfaceName=HTMLElement
</span><span class="cx"> source wrapperOnlyIfMediaIsAvailable, conditional=VIDEO
</span><span class="cx"> span
</span></span></pre>
</div>
</div>

</body>
</html>