| Index: Source/core/dom/Node.cpp
 | 
| diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp
 | 
| index 26efd32e7d0d4d9cecc192988c7d57e86b4cc50a..f24d0eca7f86a02a866a6ea89366338fc09ffe99 100644
 | 
| --- a/Source/core/dom/Node.cpp
 | 
| +++ b/Source/core/dom/Node.cpp
 | 
| @@ -34,7 +34,6 @@
 | 
|  #include "core/dom/Attribute.h"
 | 
|  #include "core/dom/ChildListMutationScope.h"
 | 
|  #include "core/dom/ChildNodeList.h"
 | 
| -#include "core/dom/ClassNodeList.h"
 | 
|  #include "core/dom/DOMImplementation.h"
 | 
|  #include "core/dom/Document.h"
 | 
|  #include "core/dom/DocumentFragment.h"
 | 
| @@ -44,7 +43,6 @@
 | 
|  #include "core/dom/ElementRareData.h"
 | 
|  #include "core/dom/ExceptionCode.h"
 | 
|  #include "core/dom/LiveNodeList.h"
 | 
| -#include "core/dom/NameNodeList.h"
 | 
|  #include "core/dom/NodeRareData.h"
 | 
|  #include "core/dom/NodeTraversal.h"
 | 
|  #include "core/dom/ProcessingInstruction.h"
 | 
| @@ -79,7 +77,6 @@
 | 
|  #include "core/html/HTMLDialogElement.h"
 | 
|  #include "core/html/HTMLFrameOwnerElement.h"
 | 
|  #include "core/html/HTMLStyleElement.h"
 | 
| -#include "core/html/RadioNodeList.h"
 | 
|  #include "core/page/ContextMenuController.h"
 | 
|  #include "core/page/EventHandler.h"
 | 
|  #include "core/frame/Frame.h"
 | 
| @@ -360,7 +357,9 @@ void Node::setNodeValue(const String&)
 | 
|  
 | 
|  PassRefPtr<NodeList> Node::childNodes()
 | 
|  {
 | 
| -    return ensureRareData().ensureNodeLists().ensureChildNodeList(this);
 | 
| +    if (isContainerNode())
 | 
| +        return ensureRareData().ensureNodeLists().ensureChildNodeList(toContainerNode(this));
 | 
| +    return ensureRareData().ensureNodeLists().ensureEmptyChildNodeList(this);
 | 
|  }
 | 
|  
 | 
|  Node& Node::lastDescendant() const
 | 
| @@ -1258,48 +1257,6 @@ bool Node::inSameContainingBlockFlowElement(Node *n)
 | 
|  
 | 
|  // FIXME: End of obviously misplaced HTML editing functions.  Try to move these out of Node.
 | 
|  
 | 
| -PassRefPtr<NodeList> Node::getElementsByTagName(const AtomicString& localName)
 | 
| -{
 | 
| -    if (localName.isNull())
 | 
| -        return 0;
 | 
| -
 | 
| -    if (document().isHTMLDocument())
 | 
| -        return ensureRareData().ensureNodeLists().addCacheWithAtomicName<HTMLTagNodeList>(this, HTMLTagNodeListType, localName);
 | 
| -    return ensureRareData().ensureNodeLists().addCacheWithAtomicName<TagNodeList>(this, TagNodeListType, localName);
 | 
| -}
 | 
| -
 | 
| -PassRefPtr<NodeList> Node::getElementsByTagNameNS(const AtomicString& namespaceURI, const AtomicString& localName)
 | 
| -{
 | 
| -    if (localName.isNull())
 | 
| -        return 0;
 | 
| -
 | 
| -    if (namespaceURI == starAtom)
 | 
| -        return getElementsByTagName(localName);
 | 
| -
 | 
| -    return ensureRareData().ensureNodeLists().addCacheWithQualifiedName(this, namespaceURI.isEmpty() ? nullAtom : namespaceURI, localName);
 | 
| -}
 | 
| -
 | 
| -// Takes an AtomicString in argument because it is common for elements to share the same name attribute.
 | 
| -// Therefore, the NameNodeList factory function expects an AtomicString type.
 | 
| -PassRefPtr<NodeList> Node::getElementsByName(const AtomicString& elementName)
 | 
| -{
 | 
| -    return ensureRareData().ensureNodeLists().addCacheWithAtomicName<NameNodeList>(this, NameNodeListType, elementName);
 | 
| -}
 | 
| -
 | 
| -// Takes an AtomicString in argument because it is common for elements to share the same set of class names.
 | 
| -// Therefore, the ClassNodeList factory function expects an AtomicString type.
 | 
| -PassRefPtr<NodeList> Node::getElementsByClassName(const AtomicString& classNames)
 | 
| -{
 | 
| -    return ensureRareData().ensureNodeLists().addCacheWithAtomicName<ClassNodeList>(this, ClassNodeListType, classNames);
 | 
| -}
 | 
| -
 | 
| -PassRefPtr<RadioNodeList> Node::radioNodeList(const AtomicString& name, bool onlyMatchImgElements)
 | 
| -{
 | 
| -    ASSERT(hasTagName(formTag) || hasTagName(fieldsetTag));
 | 
| -    CollectionType type = onlyMatchImgElements ? RadioImgNodeListType : RadioNodeListType;
 | 
| -    return ensureRareData().ensureNodeLists().addCacheWithAtomicName<RadioNodeList>(this, type, name);
 | 
| -}
 | 
| -
 | 
|  PassRefPtr<Element> Node::querySelector(const AtomicString& selectors, ExceptionState& exceptionState)
 | 
|  {
 | 
|      if (selectors.isEmpty()) {
 | 
| 
 |