docs: private void initGraphics() {
          // Set initial size
          if (Double.compare(gauge.getPrefWidth(), 0.0) <= 0 || Double.compare(gauge.getPrefHeight(), 0.0) <= 0 ||
              Double.compare(gauge.getWidth(), 0.0) <= 0 || Double.compare(gauge.getHeight(), 0.0) <= 0) {
              if (gauge.getPrefWidth() > 0 && gauge.getPrefHeight() > 0) {
                  gauge.setPrefSize(gauge.getPrefWidth(), gauge.getPrefHeight());
              } else {
                  gauge.setPrefSize(PREFERRED_WIDTH, PREFERRED_HEIGHT);
              }
          }
  
          barBackground = new Arc(PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.696, PREFERRED_WIDTH * 0.275, PREFERRED_WIDTH * 0.275, angleRange * 0.5 + 90, -angleRange);
          barBackground.setType(ArcType.OPEN);
          barBackground.setStroke(gauge.getBarBackgroundColor());
          barBackground.setStrokeWidth(PREFERRED_WIDTH * 0.02819549 * 2);
          barBackground.setStrokeLineCap(StrokeLineCap.BUTT);
          barBackground.setFill(null);
  
          sectionLayer = new Pane();
          sectionLayer.setBackground(new Background(new BackgroundFill(Color.TRANSPARENT, CornerRadii.EMPTY, Insets.EMPTY)));
  
          bar = new Arc(PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.696, PREFERRED_WIDTH * 0.275, PREFERRED_WIDTH * 0.275, angleRange * 0.5 + 90, 0);
          bar.setType(ArcType.OPEN);
          bar.setStroke(gauge.getBarColor());
          bar.setStrokeWidth(PREFERRED_WIDTH * 0.02819549 * 2);
          bar.setStrokeLineCap(StrokeLineCap.BUTT);
          bar.setFill(null);
          //bar.setMouseTransparent(sectionsAlwaysVisible ? true : false);
          bar.setVisible(!sectionsAlwaysVisible);
  
          needleRotate = new Rotate((gauge.getValue() - oldValue - minValue) * angleStep);
  
          needleMoveTo1       = new MoveTo();
          needleCubicCurveTo2 = new CubicCurveTo();
          needleCubicCurveTo3 = new CubicCurveTo();
          needleCubicCurveTo4 = new CubicCurveTo();
          needleCubicCurveTo5 = new CubicCurveTo();
          needleCubicCurveTo6 = new CubicCurveTo();
          needleCubicCurveTo7 = new CubicCurveTo();
          needleClosePath8    = new ClosePath();
          needle = new Path(needleMoveTo1, needleCubicCurveTo2, needleCubicCurveTo3, needleCubicCurveTo4, needleCubicCurveTo5, needleCubicCurveTo6, needleCubicCurveTo7, needleClosePath8);
          needle.setFillRule(FillRule.EVEN_ODD);
          needle.getTransforms().setAll(needleRotate);
          needle.setFill(gauge.getNeedleColor());
          needle.setPickOnBounds(false);
          needle.setStrokeType(StrokeType.INSIDE);
          needle.setStrokeWidth(1);
          needle.setStroke(gauge.getBackgroundPaint());
  
          needleTooltip = new Tooltip(String.format(locale, formatString, gauge.getValue()));
          needleTooltip.setTextAlignment(TextAlignment.CENTER);
          Tooltip.install(needle, needleTooltip);
  
          minValueText = new Text(String.format(locale, "%." + gauge.getTickLabelDecimals() + "f", gauge.getMinValue()));
          minValueText.setFill(gauge.getTitleColor());
          Helper.enableNode(minValueText, gauge.getTickLabelsVisible());
  
          maxValueText = new Text(String.format(locale, "%." + gauge.getTickLabelDecimals() + "f", gauge.getMaxValue()));
          maxValueText.setFill(gauge.getTitleColor());
          Helper.enableNode(maxValueText, gauge.getTickLabelsVisible());
  
          titleText = new Text(gauge.getTitle());
          titleText.setFill(gauge.getTitleColor());
          Helper.enableNode(titleText, !gauge.getTitle().isEmpty());
  
          if (!sections.isEmpty() && sectionsVisible && !sectionsAlwaysVisible) {
              barTooltip = new Tooltip();
              barTooltip.setTextAlignment(TextAlignment.CENTER);
              Tooltip.install(bar, barTooltip);
          }
  
          pane = new Pane(barBackground, sectionLayer, bar, needle, minValueText, maxValueText, titleText);
          pane.setBorder(new Border(new BorderStroke(gauge.getBorderPaint(), BorderStrokeStyle.SOLID, CornerRadii.EMPTY, new BorderWidths(gauge.getBorderWidth()))));
          pane.setBackground(new Background(new BackgroundFill(gauge.getBackgroundPaint(), CornerRadii.EMPTY, Insets.EMPTY)));
  
          getChildren().setAll(pane);
      }