<head>
<script>
function doit()
{
    var B = document.getElementById("span-B");
    B.customProperty = "B";
    B.nextSibling.customProperty = "D";

    document.getElementById("div").innerHTML = "<span>replacement content</span>";

    // create lots of objects to force a garbage collection
    var i = 0;
    var s;
    while (i < 5000) {
        i = i+1.11;
	s = s + " ";
    }

    var output= document.getElementById("output");

    output.innerHTML += B.customProperty + "<BR>";
    if (B.nextSibling) {
        output.innerHTML += B.nextSibling.customProperty + "<BR>";
    }
}

if (window.layoutTestController) {
    layoutTestController.dumpAsText();
}

</script>
</head>

<body onload="doit()">
<div style="border: 1px solid red">
<p>
This test verifies that DOM nodes are not retained just because a wrapper exists and is protected for a sibling. A wrapper must exist for the node itself or for an ancestor.
</p>
<p>
The output should be the following pieces of text on lines by themselves: "replacement content", "B".
</p>
</div>
<div id="div">
<span id="span-A"><span id="span-B"><span id="span-C">original span</span></span>
<span id="span-D"> xx </span>
</span>
</div>
<div id="output">
</div>
</body>
