(I also had some trouble getting my head around this -- realizing that the tree created by XML::Twig includes both objects that represent whole markup units and objects that hold the text content ((P)CDATA), if any, that precede and/or follow each whole markup unit.
Just a comment on this: all complete models of XML trees (like the DOM) store the text itself in separate nodes. Otherwise you can't really process mixed content very well. Tools like XML::Simple do not cope very well with mixed content.
In a lot of models, text nodes and element nodes are in 2 different classes, but for simplicity's sake I chose to make them just 1 class, which might have been a mistake.
Does it make sense?