docs: @Override protected void initGraphics() {
          super.initGraphics();
  
          if (tile.isAutoScale()) tile.calcAutoScale();
          oldValue          = tile.getValue();
          sectionMap        = new HashMap<>(sections.size());
          for(Section section : sections) { sectionMap.put(section, new Arc()); }
  
          barColor       = tile.getBarColor();
          thresholdColor = tile.getThresholdColor();
  
          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(barColor);
          barBackground.setStrokeWidth(PREFERRED_WIDTH * 0.02819549 * 2);
          barBackground.setStrokeLineCap(StrokeLineCap.BUTT);
          barBackground.setFill(null);
  
          thresholdBar = new Arc(PREFERRED_WIDTH * 0.5, PREFERRED_HEIGHT * 0.696, PREFERRED_WIDTH * 0.275, PREFERRED_WIDTH * 0.275, -angleRange * 0.5 + 90, 0);
          thresholdBar.setType(ArcType.OPEN);
          thresholdBar.setStroke(tile.getThresholdColor());
          thresholdBar.setStrokeWidth(PREFERRED_WIDTH * 0.02819549 * 2);
          thresholdBar.setStrokeLineCap(StrokeLineCap.BUTT);
          thresholdBar.setFill(null);
          Helper.enableNode(thresholdBar, !tile.getSectionsVisible());
  
          sectionPane = new Pane();
          Helper.enableNode(sectionPane, tile.getSectionsVisible());
  
          if (sectionsVisible) { drawSections(); }
  
          alertIcon = new Path();
          alertIcon.setFillRule(FillRule.EVEN_ODD);
          alertIcon.setFill(Color.YELLOW);
          alertIcon.setStroke(null);
          Helper.enableNode(alertIcon, tile.isAlert());
          alertTooltip = new Tooltip(tile.getAlertMessage());
          Tooltip.install(alertIcon, alertTooltip);
  
          needleRotate     = new Rotate((tile.getValue() - oldValue - minValue) * angleStep);
          needleRectRotate = new Rotate((tile.getValue() - oldValue - minValue) * angleStep);
  
          needleRect = new Rectangle();
          needleRect.setFill(tile.getBackgroundColor());
          needleRect.getTransforms().setAll(needleRectRotate);
  
          needle = new Path();
          needle.setFillRule(FillRule.EVEN_ODD);
          needle.getTransforms().setAll(needleRotate);
          needle.setFill(tile.getNeedleColor());
          needle.setStrokeWidth(0);
          needle.setStroke(Color.TRANSPARENT);
  
          titleText = new Text(tile.getTitle());
          titleText.setFill(tile.getTitleColor());
          Helper.enableNode(titleText, !tile.getTitle().isEmpty());
  
          valueText = new Text(String.format(locale, formatString, tile.getCurrentValue()));
          valueText.setFill(tile.getValueColor());
          valueText.setTextOrigin(VPos.BASELINE);
          Helper.enableNode(valueText, tile.isValueVisible() && !tile.isAlert());
  
          unitText = new Text(tile.getUnit());
          unitText.setFill(tile.getUnitColor());
          unitText.setTextOrigin(VPos.BASELINE);
          Helper.enableNode(unitText, tile.isValueVisible() && !tile.isAlert());
  
          valueUnitFlow = new TextFlow(valueText, unitText);
          valueUnitFlow.setTextAlignment(TextAlignment.CENTER);
  
          minValueText = new Text(String.format(locale, "%." + tile.getTickLabelDecimals() + "f", tile.getMinValue()));
          minValueText.setFill(tile.getTitleColor());
  
          maxValueText = new Text(String.format(locale, "%." + tile.getTickLabelDecimals() + "f", tile.getMaxValue()));
          maxValueText.setFill(tile.getTitleColor());
  
          thresholdRect = new Rectangle();
          thresholdRect.setFill(sectionsVisible ? Color.TRANSPARENT : tile.getValue() > tile.getThreshold() ? tile.getThresholdColor() : Tile.GRAY);
          Helper.enableNode(thresholdRect, tile.isThresholdVisible());
  
          thresholdText = new Text(String.format(locale, "%." + tile.getTickLabelDecimals() + "f", tile.getThreshold()));
          thresholdText.setFill(sectionsVisible ? Color.TRANSPARENT : Tile.GRAY);
          Helper.enableNode(thresholdText, tile.isThresholdVisible());
  
          getPane().getChildren().addAll(barBackground, thresholdBar, sectionPane, alertIcon, needleRect, needle, titleText, valueUnitFlow, minValueText, maxValueText, thresholdRect, thresholdText);
      }