private void extractGroupText(XHTMLContentHandler xhtml, ShapeContainer shapeContainer,
                                  int depth) throws SAXException {
        List<HSLFShape> shapes = getShapes(shapeContainer);
        if (shapes == null) {
            return;
        }

        //Only process items with depth > 0 because they should have been included
        //already in slide.getTextParagraphs above.

        //However, cells are considered grouped within the table, so ignore them.
        //I don't believe that cells can be inside a text box or other
        //grouped text containing object, so always ignore them.
        //I also don't believe that a table can be grouped with a table.
        //If these beliefs are wrong...must fix!
        List<List<HSLFTextParagraph>> paragraphList = new ArrayList<>();
        for (HSLFShape shape : shapes) {
            if (shape instanceof HSLFGroupShape) {
                //work recursively, HSLFGroupShape can contain HSLFGroupShape
                extractGroupText(xhtml, ((HSLFGroupShape) shape), depth + 1);
            } else if (shape instanceof HSLFTextShape && !(shape instanceof HSLFTableCell) &&
                    depth > 0) {
                paragraphList.add(((HSLFTextShape) shape).getTextParagraphs());
            }
        }
        textRunsToText(xhtml, paragraphList);
    }
This is the catch-all for embedded objects.  If we didn't come across
them in the shapes in the slides, headers/footers, etc, try to
extract them here.
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/HSLFExtractor.java