}
    private void followPath(Shape s, int drawType) {        PdfContentByte cb = _currentPage;        if (s==null) return;        if (drawType==STROKE) {            if (!(_stroke instanceof BasicStroke)) {                s = _stroke.createStrokedShape(s);                followPath(s, FILL);                return;            }        }        if (drawType==STROKE) {            setStrokeDiff(_stroke, _oldStroke);            _oldStroke = _stroke;            ensureStrokeColor();        }        else if (drawType==FILL)            ensureFillColor();        PathIterator points;        if (drawType == CLIP)            points = s.getPathIterator(IDENTITY);        else            points = s.getPathIterator(_transform);        float[] coords = new float[6];        int traces = 0;        while(!points.isDone()) {            ++traces;            int segtype = points.currentSegment(coords);            normalizeY(coords);            switch(segtype) {                case PathIterator.SEG_CLOSE:                    cb.closePath();                    break;                                    case PathIterator.SEG_CUBICTO:                    cb.curveTo(coords[0], coords[1], coords[2], coords[3], coords[4], coords[5]);                    break;                                    case PathIterator.SEG_LINETO:                    cb.lineTo(coords[0], coords[1]);                    break;                                    case PathIterator.SEG_MOVETO:                    cb.moveTo(coords[0], coords[1]);                    break;                                    case PathIterator.SEG_QUADTO:                    cb.curveTo(coords[0], coords[1], coords[2], coords[3]);                    break;            }            points.next();        }                switch (drawType) {        case FILL:            if (traces > 0) {                if (points.getWindingRule() == PathIterator.WIND_EVEN_ODD)                    cb.eoFill();                else                    cb.fill();            }            break;        case STROKE:            if (traces > 0)                cb.stroke();            break;        default: //drawType==CLIP            if (traces == 0)                cb.rectangle(0, 0, 0, 0);            if (points.getWindingRule() == PathIterator.WIND_EVEN_ODD)                cb.eoClip();            else                cb.clip();            cb.newPath();        }    }