sortSystemStems(system);
    public int processSystemUndueStems (SystemInfo system)    {        logger.debug("processSystemUndueStems " + system);        int nb = 0;        // Collect all undue stems        List<Stick> SuspectedStems = new ArrayList<Stick>();        for (Stick stem : system.getStems()) {            if (!stem.hasSymbols()) {                SuspectedStems.add(stem);            }        }        // (Temporarily) cut the link from sections to their containing        // stems         for (Stick stem : SuspectedStems) {             logger.debug("Suspected Stem " + stem);             for (GlyphSection section : stem.getMembers()) {                 section.setGlyph(null);             }         }        // Extract brand new glyphs        extractNewSystemGlyphs(system);        // Try to recognize each glyph in turn        List<Glyph> symbols = new ArrayList<Glyph>();        for (Glyph glyph : system.getGlyphs()) {            if (glyph.getShape() == null) {                Shape vote = commonVote(glyph);                if (vote != null) {                    glyph.setShape(vote);                    if (glyph.isKnown()) {                        if (logger.isDebugEnabled()) {                            logger.debug("New symbol " + glyph);                        }                        symbols.add(glyph);                        nb++;                    }                }            }        }        // Keep stems that have not been replaced by symbols, definitively        // remove the others        for (Stick stem : SuspectedStems) {            // Check if one of its section is now part of a symbol            boolean known = false;            Glyph glyph = null;            for (GlyphSection section : stem.getMembers()) {                glyph = section.getGlyph();                if (glyph != null && glyph.isKnown()) {                    known = true;                    removeStem(stem, system, /* cutSections => */ false);                    break;                }            }            if (!known) {                // Remove glyph                if (glyph != null) {                    removeGlyph(glyph, system, /* cutSections => */ true);                }                // Restore the stem <- section link                for (GlyphSection section : stem.getMembers()) {                    section.setGlyph(stem);                }            }        }        // Extract brand new glyphs        extractNewSystemGlyphs(system);        return nb;    }