<html>
<head>
<script type="text/javascript">

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

function boom()
{
  var tr = document.getElementById("tr1");
  var xxx = document.getElementById("tr1").firstChild;

  tr.insertBefore(document.createTextNode("0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99"), xxx);

  tr.insertBefore(document.createElementNS("http://www.w3.org/1999/xhtml", "thead"), xxx);
}
</script>
<style>
.table {
    display: table;
}

.tbody {
    display: table-row-group;
}

.tr {
    display: table-row;
}

.td {
    display: table-cell;
}

</style>
</head>

<body onload="boom()">

<div>This test checks whether a particular odd arrangement of DOM
nodes results in render tree consistency violations.</div>

<div class="table" border="1" id="tr1">
 xxx
<div class="tbody">
 <div class="tr">
  <div class="td">Whee</div>
 </div>
</div>
</div>

<form id="f1">QQQ</form>

</body>
</html>
