<html>
<head>
<script src="../../resources/gc.js"></script>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function go() {
  frame = document.getElementById('frame');
  node2 = document.createElement('b');
  node1 = document.createElement('h1');
  node1.appendChild(node2);
  range = document.createRange();
  range.selectNodeContents(node1);

  frame.contentDocument.body.appendChild(node1);

  node1.removeChild(node2);
  delete node2;
  gc();
  document.body.innerText = 'Final end container, offset: ' + range.endContainer + ', ' + range.endOffset;
  if (window.testRunner)
    testRunner.notifyDone()
}
</script>
</head>
<body onload="go()">
FAIL
<iframe id="frame"></iframe>
</body>
</html>
