[quote user="Bruce Reeves SRNS"]for each (ITextPartIdPtr textPartId in textPartIds)[/quote]
That's a Microsoft non-standard language extension: This non-standard keyword is available in both C++/CLI and native C++ projects. As Microsoft recommends, prefer the standard range-based for statement: for (ITextPartIdPtr textPartId : textPartIds) {}
[quote user="Bruce Reeves SRNS"]When there is a multi-line TextNode[/quote]
A text node is a collection of text elements. They may appear to be multi-line but that is not a requirement. They may be co-linear, for example, if you want to construct a 'sentence' of words having different properties...