private final void drawSections(final GraphicsContext CTX) {
        final double xy        = (size - 0.87 * size) * 0.5;
        final double wh        = size * 0.87;
        final double MIN_VALUE = getSkinnable().getMinValue();
        final double OFFSET = 90 - getSkinnable().getStartAngle();
        for (int i = 0 ; i < getSkinnable().getSections().size() ; i++) {
            final Section SECTION      = getSkinnable().getSections().get(i);
            final double  ANGLE_START  = (SECTION.getStart() - MIN_VALUE) * angleStep;
            final double  ANGLE_EXTEND = (SECTION.getStop() - SECTION.getStart()) * angleStep;
            CTX.save();
            switch(i) {
                case 0: CTX.setStroke(getSkinnable().getSectionFill0()); break;
                case 1: CTX.setStroke(getSkinnable().getSectionFill1()); break;
                case 2: CTX.setStroke(getSkinnable().getSectionFill2()); break;
                case 3: CTX.setStroke(getSkinnable().getSectionFill3()); break;
                case 4: CTX.setStroke(getSkinnable().getSectionFill4()); break;
                case 5: CTX.setStroke(getSkinnable().getSectionFill5()); break;
                case 6: CTX.setStroke(getSkinnable().getSectionFill6()); break;
                case 7: CTX.setStroke(getSkinnable().getSectionFill7()); break;
                case 8: CTX.setStroke(getSkinnable().getSectionFill8()); break;
                case 9: CTX.setStroke(getSkinnable().getSectionFill9()); break;
            }
            CTX.setLineWidth(size * 0.1);
            CTX.setLineCap(StrokeLineCap.BUTT);
            CTX.strokeArc(xy, xy, wh, wh, -(OFFSET + ANGLE_START), -ANGLE_EXTEND, ArcType.OPEN);
            CTX.restore();
        }
    }