_icon(ctx, x, y, selected, hover, values) {
    const iconSize = Number(this.options.icon.size);

    if (this.options.icon.code !== undefined) {
      ctx.font = [
        this.options.icon.weight != null
          ? this.options.icon.weight
          : selected
          ? "bold"
          : "",
        // If the weight is forced (for example to make Font Awesome 5 work
        // properly) substitute slightly bigger size for bold font face.
        (this.options.icon.weight != null && selected ? 5 : 0) +
          iconSize +
          "px",
        this.options.icon.face,
      ].join(" ");

      // draw icon
      ctx.fillStyle = this.options.icon.color || "black";
      ctx.textAlign = "center";
      ctx.textBaseline = "middle";

      // draw shadow if enabled
      this.enableShadow(ctx, values);
      ctx.fillText(this.options.icon.code, x, y);

      // disable shadows for other elements.
      this.disableShadow(ctx, values);
    } else {
      console.error(
        "When using the icon shape, you need to define the code in the icon options object. This can be done per node or globally."
      );
    }
  }
@param {CanvasRenderingContext2D} ctx
@param {number} x width
@param {number} y height
@param {boolean} selected
@param {boolean} hover - Unused
@param {ArrowOptions} values