I think I see a problem in getUnvisitedChildNode(), Is it possible for it to return a null value?