Martin Fowler discusses Courtesy Implementations in Java-like languages. (Oddly he uses Ruby, which is capable of the solution presented in Smalltalk below.) These are more easily done in languages that trust you to extend the "system" classes. Moreover...
What if the Box can contain other kinds of objects that don't inherit from Node?
Object>>elephantCount
"This is only installed in your boxed elephant application."
^0
Elephant>>elephantCount
^1
Box>>elephantCount
^children inject: 0 into: [ :count :child | count + child elephantCount]