docs: @Override protected void resize() {
          double width  = gauge.getWidth() - gauge.getInsets().getLeft() - gauge.getInsets().getRight();
          double height = gauge.getHeight() - gauge.getInsets().getTop() - gauge.getInsets().getBottom();
          size = width < height ? width : height;
  
          if (size > 0 ) {
              double centerX   = size * 0.5;
              double centerY   = size * 0.5;
              double barRadius = size * 0.3125;
              double barWidth  = size * 0.18382353;
  
              pane.setMaxSize(size, size);
              pane.relocate((gauge.getWidth() - width) * 0.5, (gauge.getHeight() - height) * 0.5);
  
              barBackground.setCenterX(centerX);
              barBackground.setCenterY(centerY);
              barBackground.setRadiusX(barRadius);
              barBackground.setRadiusY(barRadius);
              barBackground.setStrokeWidth(barWidth);
              barBackground.setStartAngle(ANGLE_RANGE * 0.5 + 90);
              barBackground.setLength(-ANGLE_RANGE);
  
              sectionCanvas.setWidth(size);
              sectionCanvas.setHeight(size);
  
              // Areas, Sections and Tick Marks
              sectionCanvas.setCache(false);
              sectionCtx.clearRect(0, 0, size, size);
              if (gauge.isGradientBarEnabled() && gauge.getGradientLookup() != null) {
                  drawGradientBar();
                  if (gauge.getMajorTickMarksVisible()) drawTickMarks();
              } else if (gauge.getSectionsVisible()) {
                  drawSections();
                  if (gauge.getMajorTickMarksVisible()) drawTickMarks();
              }
              sectionCanvas.setCache(true);
              sectionCanvas.setCacheHint(CacheHint.QUALITY);
  
              double needleWidth  = size * 0.26470588;
              double needleHeight = size * 0.47426471;
  
              needle.setCache(false);
  
              needleMoveTo1.setX(0.277777777777778 * needleWidth); needleMoveTo1.setY(0.720930232558139 * needleHeight);
  
              needleCubicCurveTo2.setControlX1(0.277777777777778 * needleWidth); needleCubicCurveTo2.setControlY1(0.652428682170543 * needleHeight);
              needleCubicCurveTo2.setControlX2(0.377268055555556 * needleWidth); needleCubicCurveTo2.setControlY2(0.596899224806202 * needleHeight);
              needleCubicCurveTo2.setX(0.5 * needleWidth); needleCubicCurveTo2.setY(0.596899224806202 * needleHeight);
  
              needleCubicCurveTo3.setControlX1(0.622731944444444 * needleWidth); needleCubicCurveTo3.setControlY1(0.596899224806202 * needleHeight);
              needleCubicCurveTo3.setControlX2(0.722222222222222 * needleWidth); needleCubicCurveTo3.setControlY2(0.652428682170543 * needleHeight);
              needleCubicCurveTo3.setX(0.722222222222222 * needleWidth); needleCubicCurveTo3.setY(0.720930232558139 * needleHeight);
  
              needleCubicCurveTo4.setControlX1(0.722222222222222 * needleWidth); needleCubicCurveTo4.setControlY1(0.789431782945736 * needleHeight);
              needleCubicCurveTo4.setControlX2(0.622731944444444 * needleWidth); needleCubicCurveTo4.setControlY2(0.844961240310077 * needleHeight);
              needleCubicCurveTo4.setX(0.5 * needleWidth); needleCubicCurveTo4.setY(0.844961240310077 * needleHeight);
  
              needleCubicCurveTo5.setControlX1(0.377268055555556 * needleWidth); needleCubicCurveTo5.setControlY1(0.844961240310077 * needleHeight);
              needleCubicCurveTo5.setControlX2(0.277777777777778 * needleWidth); needleCubicCurveTo5.setControlY2(0.789431782945736 * needleHeight);
              needleCubicCurveTo5.setX(0.277777777777778 * needleWidth); needleCubicCurveTo5.setY(0.720930232558139 * needleHeight);
  
              needleMoveTo7.setX(0); needleMoveTo7.setY(0.720930232558139 * needleHeight);
              
              needleCubicCurveTo8.setControlX1(0); needleCubicCurveTo8.setControlY1(0.875058139534884 * needleHeight);
              needleCubicCurveTo8.setControlX2(0.223854166666667 * needleWidth); needleCubicCurveTo8.setControlY2(needleHeight);
              needleCubicCurveTo8.setX(0.5 * needleWidth); needleCubicCurveTo8.setY(needleHeight);
  
              needleCubicCurveTo9.setControlX1(0.776145833333333 * needleWidth); needleCubicCurveTo9.setControlY1(needleHeight);
              needleCubicCurveTo9.setControlX2(needleWidth); needleCubicCurveTo9.setControlY2(0.875058139534884 * needleHeight);
              needleCubicCurveTo9.setX(needleWidth); needleCubicCurveTo9.setY(0.720930232558139 * needleHeight);
  
              needleCubicCurveTo10.setControlX1(needleWidth); needleCubicCurveTo10.setControlY1(0.566860465116279 * needleHeight);
              needleCubicCurveTo10.setControlX2(0.5 * needleWidth); needleCubicCurveTo10.setControlY2(0);
              needleCubicCurveTo10.setX(0.5 * needleWidth); needleCubicCurveTo10.setY(0);
  
              needleCubicCurveTo11.setControlX1(0.5 * needleWidth); needleCubicCurveTo11.setControlY1(0);
              needleCubicCurveTo11.setControlX2(0); needleCubicCurveTo11.setControlY2(0.566860465116279 * needleHeight);
              needleCubicCurveTo11.setX(0); needleCubicCurveTo11.setY(0.720930232558139 * needleHeight);
  
              needle.setCache(true);
              needle.setCacheHint(CacheHint.ROTATE);
  
              needle.relocate((size - needle.getLayoutBounds().getWidth()) * 0.5, centerY - needle.getLayoutBounds().getHeight() + needle.getLayoutBounds().getWidth() * 0.5);
              needleRotate.setPivotX(needle.getLayoutBounds().getWidth() * 0.5);
              needleRotate.setPivotY(needle.getLayoutBounds().getHeight() - needle.getLayoutBounds().getWidth() * 0.5);
          }
      }