<script>
function gc() {
 {
 }
}
function main() {
var x29 = document.getElementById("x29");
try { x22.focus(); x22.selectionEnd = 87; } catch { }
try { x29.prepend(x7); } catch { }
}
function f4() {
var x37 = document.getElementById("x37");
try { v30 = x7.contentDocument; } catch { }
try { v30.all[98 % v30.all.length].appendChild(x3); } catch { }
try { x7.data = "x"; } catch { }
try { x37.height = "1em"; } catch { }
}
if (window.testRunner)
    testRunner.dumpAsText();
</script>
<body onload="main()">
    <p>This test passes if it doesn't crash.</p>
<h4 onfocusin="f4()" part="part0">
<input id="x22" type="url">
<small id="x3" itemscope="">
<a id="x29" href="x">
<h2 webkitdropzone="link">
</h2>
<object id="x37" standby="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA">
</object>
</small>
</style>
</details>
<object id="x7" data="x">
</body>
