docs: private String parseCT_Rst(XMLEventReader xmlEventReader) throws XMLStreamException {
      // Precondition: pointing to <si>;  Post condition: pointing to </si>
      StringBuilder buf = new StringBuilder();
      XMLEvent xmlEvent;
      while((xmlEvent = xmlEventReader.nextTag()).isStartElement()) {
        switch(xmlEvent.asStartElement().getName().getLocalPart()) {
          case "t": // Text
            buf.append(xmlEventReader.getElementText());
            break;
          case "r": // Rich Text Run
            parseCT_RElt(xmlEventReader, buf);
            break;
          case "rPh": // Phonetic Run
          case "phoneticPr": // Phonetic Properties
            skipElement(xmlEventReader);
            break;
          default:
            throw new IllegalArgumentException(xmlEvent.asStartElement().getName().getLocalPart());
        }
      }
      return buf.length() > 0 ? buf.toString() : null;
    }