<html>
<head>
<style>
.c0 { display: table-caption; width: 0px; }
.c7 { float: right; padding-right: 100px; padding-bottom: 100px;}
</style>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
}

var nodes = Array();

function tryToCrash()
{
    try { nodes[91].appendChild(nodes[39]); } catch(e) {}
    setTimeout('testRunner.notifyDone();',1000);
}

function boom() {
    try { nodes[8] = document.createElement('dfn'); } catch(e) {}
    try { nodes[8].setAttribute('class', 'c7'); } catch(e) {}
    try { nodes[30] = document.createElement('span'); } catch(e) {}
    try { nodes[39] = document.createElement('strong'); } catch(e) {}
    try { nodes[69] = document.createElement('header'); } catch(e) {}
    try { nodes[39].appendChild(nodes[69]); } catch(e) {}
    try { nodes[89] = document.createElement('nav'); } catch(e) {}
    try { nodes[89].setAttribute('class', 'c0'); } catch(e) {}
    try { document.documentElement.appendChild(nodes[89]); } catch(e) {}
    try { nodes[91] = document.createElement('form'); } catch(e) {}
    try { nodes[91].setAttribute('class', 'c0'); } catch(e) {}
    try { document.documentElement.appendChild(nodes[91]); } catch(e) {}
    try { nodes[89].appendChild(nodes[8]); } catch(e) {}
    setTimeout('try { nodes[30].appendChild(nodes[89]); } catch(e) {}', 4);
    setTimeout('tryToCrash();', 0);
}
</script>
</head>
<body onLoad="setTimeout('boom();',0)">
Passes if it doesn't crash!
</body>
</html>