<script>

function test() {
    if (window.testRunner)
        testRunner.dumpAsText();

    var inputs = "";
    for (i = 0; i != 500; ++i)
        inputs += "<input>";

    document.getElementById("a").innerHTML = inputs;
    document.getElementById("b").innerHTML = inputs;
    document.getElementById("a").innerHTML = "";
    document.getElementById("c").innerHTML = inputs;

    document.getElementById("a").innerHTML = "";
    document.getElementById("b").innerHTML = "";
    document.getElementById("c").innerHTML = "";

    document.getElementById("a").innerHTML = inputs;
    document.getElementById("b").innerHTML = inputs;
    document.getElementById("a").innerHTML = "";
    document.getElementById("c").innerHTML = inputs;

    document.getElementById("a").innerHTML = "";
    document.getElementById("b").innerHTML = "";
    document.getElementById("c").innerHTML = "";

    document.getElementById("a").innerHTML = inputs;
    document.getElementById("b").innerHTML = inputs;
    document.getElementById("a").innerHTML = "";
    document.getElementById("c").innerHTML = inputs;

    document.getElementById("complete").innerHTML = "The test was run. If it failed you would have seen an assertion failure or crash. "
        + "In some cases the crash won't occur until you move on to the next page.";
    document.getElementById("b").innerHTML = "";
    document.getElementById("c").innerHTML = "";
}

</script>

<body onload="test()">

<p>This adds and removes lots of input elements, to test the behavior of ListHashSet when it has more elements than will fit in its pool.</p>

<p id="complete">IF YOU CAN SEE THIS, THE TEST DID NOT RUN.</p>

<div id="a"></div><div id="b"></div><div id="c"></div>
