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);
              }
          }
  
          Color barColor = gauge.getBarColor();
          gauge.setGradientBarStops(new Stop(0.0, barColor),
                                             new Stop(0.01, barColor),
                                             new Stop(0.75, barColor.deriveColor(-10, 1, 1, 1)),
                                             new Stop(1.0, barColor.deriveColor(-20, 1, 1, 1)));
  
          shadow = new DropShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.45), 0.01 * PREFERRED_WIDTH, 0, 0.01 * PREFERRED_WIDTH, 0);
  
          circle = new Circle();
          circle.setFill(null);
  
          arc = new Arc(PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.5, PREFERRED_WIDTH * 0.96, PREFERRED_WIDTH * 0.48, 90, 0);
          arc.setStrokeWidth(PREFERRED_WIDTH * 0.008);
          arc.setStrokeType(StrokeType.CENTERED);
          arc.setStrokeLineCap(StrokeLineCap.ROUND);
          arc.setFill(null);
  
          fakeDot = new Circle();
          fakeDot.setStroke(null);
  
          dot = new Circle();
          dot.setStroke(null);
          dot.setVisible(false);
          dot.setEffect(shadow);
  
          titleText = new Text(gauge.getTitle());
          titleText.setFont(Fonts.robotoLight(PREFERRED_WIDTH * 0.5));
          titleText.setFill(gauge.getTitleColor());
          Helper.enableNode(titleText, !gauge.getTitle().isEmpty());
  
          valueText = new Text(formatNumber(gauge.getLocale(), gauge.getFormatString(), gauge.getDecimals(), gauge.getCurrentValue()));
          valueText.setFont(Fonts.robotoRegular(PREFERRED_WIDTH * 0.27333));
          valueText.setFill(gauge.getValueColor());
          Helper.enableNode(valueText, gauge.isValueVisible());
  
          unitText = new Text(gauge.getUnit());
          unitText.setFont(Fonts.robotoLight(PREFERRED_WIDTH * 0.08));
          unitText.setFill(gauge.getUnitColor());
          Helper.enableNode(unitText, !gauge.getUnit().isEmpty());
  
          pane = new Pane(circle, arc, fakeDot, dot, titleText, valueText, unitText);
  
          getChildren().setAll(pane);
      }