CHILD: function(elem, match){
                        var type = match[1], parent = elem.parentNode;
 
-                       var doneName = "child" + parent.childNodes.length;
+                       var doneName = match[0];
                        
                        if ( parent && (!parent[ doneName ] || !elem.nodeIndex) ) {
                                var count = 1;
 
 });
 
 test("child and adjacent", function() {
-       expect(44);
+       expect(45);
        t( "Child", "p > a", ["simon1","google","groups","mark","yahoo","simon"] );
        t( "Child", "p> a", ["simon1","google","groups","mark","yahoo","simon"] );
        t( "Child", "p >a", ["simon1","google","groups","mark","yahoo","simon"] );
        
        t( "First Child", "p:first-child", ["firstp","sndp"] );
        t( "Nth Child", "p:nth-child(1)", ["firstp","sndp"] );
+
+       // Verify that the child position isn't being cached improperly
+       jQuery("p:first-child").after("<div></div>");
+       jQuery("p:first-child").before("<div></div>").next().remove();
+
+       t( "First Child", "p:first-child", [] );
+
+       reset();
        
        t( "Last Child", "p:last-child", ["sap"] );
        t( "Last Child", "a:last-child", ["simon1","anchor1","mark","yahoo","anchor2","simon"] );