The way to access the child nodes of element nodes, and the individual characters of text nodes, is different. If there were a common interface to access them, I could see the sense in ```nodeLength()```. But since there is not, ```nodeLength()``` forces an abstraction on the programmer without any benefit. It's a subtle point... Abstraction is hard, and I don't think ```nodeLength()``` is a good abstraction (by itself it's not really much of an abstraction anyway). The semantics of ```hasChildren(elem)``` is much clearer.