Element implements ChildNode;
Text should also implement ChildNode;
There's no reason you shouldn't be able to do nextElementSibling from a Text node, or do .before(...) on a Text node.
In truth, we should probably have this for every node type. For example nextElementSibling should work on Comment nodes too.
That's why CharacterData implements this interface too.