this.maxSlope = maxSlope;
    public void initialize (GlyphLag           lag,                            List<GlyphSection> preCandidates,                            Source             source,                            int                minCoreLength,                            double             maxAdjacency,                            int                maxThickness,                            double             maxSlope,                            boolean            longAlignment)    {        // Cache computing parameters        this.maxAdjacency = maxAdjacency;        this.maxThickness = maxThickness;        this.maxSlope = maxSlope;        this.source = source;        this.longAlignment = longAlignment;        if (logger.isFineEnabled()) {            logger.fine("initialize StickArea#" + id + " minCoreLength="                         + minCoreLength + " maxAdjacency=" + maxAdjacency                         + " maxThickness=" + maxThickness                         + " longAlignment=" + longAlignment);        }        // Use a sized array        visited = new int[lag.getLastVertexId() + 1];        Arrays.fill(visited, 0);        // Do we have pre-candidates to start with ?        if (preCandidates != null) {            candidates = preCandidates;        } else {            // Browse through our sections, to collect the long core            // sections            List<GlyphSection> target;            if (longAlignment) {                // For long alignments (staff lines), we use an                // intermediate list of candidates                target = candidates;            } else {                // For short alignment (such as stems and others), we fill                // members directly                target = members;            }            while (source.hasNext()) {                StickSection section = (StickSection) source.next();                // By vertue of the Source adaptor, all provided sections                // are entirely within the stick area. So tests for core                // sections are thickness and length, that's all.                if ((section.getRunNb() <= maxThickness)                    && (section.getMaxRunLength() >= minCoreLength)) {                    // OK, this section is candidate as core member of                    // stick set                    mark(section, target, SectionRole.CORE, 0, 0);                }            }        }        if (longAlignment) {            // Get rid of candidates too far from the staff line core            thickenAlignmentCore(candidates, members);        }        if (logger.isFineEnabled()) {            logger.fine(members.size() + " Core sections");        }        // Collect candidate sections around the core ones        for (GlyphSection section : members) {            collectNeighborsOf(section, 1, -1, true); // Before the core                                                      // section            collectNeighborsOf(section, 1, +1, true); // After the core                                                      // section        }        // Purge some internal sections        ///purgeInternals(candidates);        if (longAlignment) {            // Thicken the core sections with the candidates, still paying            // attention to the resulting thickness of the sticks.            thickenAlignmentCore(candidates, members);            ///purgeInternals(members);        } else {            members.addAll(candidates);        }        if (logger.isFineEnabled()) {            logger.fine(members.size() + " total sections");        }        // Aggregate member sections into as few sticks as possible. This        // creates instances in sticks list.        aggregateMemberSections(lag);        // Compute stick lines and check the resulting slope        // This may result in discarded sticks.        for (Iterator<Stick> it = sticks.iterator(); it.hasNext();) {            Stick stick = it.next();            // Stick slope must be very close to zero            if (stick.getWeight() < constants.minStickWeight.getValue() ||                Math.abs(stick.getLine().getSlope()) > maxSlope) {                // This is not a stick                stick.setResult(NOT_STRAIGHT);                for (GlyphSection section : stick.getMembers()) {                    if (logger.isFineEnabled()) {                        logger.fine("Discarding for not straight stick "                                     + section);                    }                    discard((StickSection) section);                }                it.remove();            }        }        if (logger.isFineEnabled()) {            dump(true);        }    }