@Override
    protected void paintComponent(Graphics g) {
      Graphics2D g2 = (Graphics2D) g;

      final Object old = g2.getRenderingHint(RenderingHints.KEY_ANTIALIASING);
      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

      g2.setColor(getBoundsColor());

      Line2D line = new Line2D.Double();
      switch (myOrientation) {
        case Callout.NORTH_WEST -> line.setLine(0, 0, getWidth() - 1, getHeight() - 1);
        case Callout.NORTH_EAST -> line.setLine(getWidth() - 1, 0, 0, getHeight() - 1);
        case Callout.SOUTH_EAST -> line.setLine(getWidth() - 1, getHeight() - 1, 0, 0);
        case Callout.SOUTH_WEST -> line.setLine(0, getHeight() - 1, getWidth() - 1, 0);
      }

      LinePainter2D.paint(g2, (int)line.getX1(), (int)line.getY1(), (int)line.getX2(), (int)line.getY2());

      final Shape arrow = LineEndDecorator.getArrowShape(line, line.getP2());
      g2.fill(arrow);

      g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, old);
    }
@Override
    protected void paintComponent(Graphics g)