@Override
    protected void paintComponent(final Graphics g) {
      if (myClipY != -1) {
        if (myTopClip) {
          //noinspection SSBasedInspection
          g.setClip(0, myClipY, getWidth(), getHeight() - myClipY);
        }
        else {
          //noinspection SSBasedInspection
          g.setClip(0, 0, getWidth(), myClipY);
        }
      }

      super.paintComponent(g);

      final Graphics2D g2d = (Graphics2D)g;

      Point pointTarget = SwingUtilities.convertPoint(myLayeredPane, myBalloon.myTargetPoint, this);
      Rectangle shapeBounds = myContent.getBounds();

      if (!DrawUtil.isSimplifiedUI()) {
        int shadowSize = myBalloon.getShadowBorderSize();

        if (shadowSize > 0 && myShadow == null && myShadowBorderProvider == null) {
          initComponentImage(pointTarget, shapeBounds);
          myShadow = ShadowBorderPainter.createShadow(myImage, 0, 0, false, shadowSize / 2);
        }

        if (myImage == null && myAlpha != -1) {
          initComponentImage(pointTarget, shapeBounds);
        }

        if (myImage != null && myAlpha != -1) {
          g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, myAlpha));
        }

        if (myShadowBorderProvider != null) {
          myShadowBorderProvider.paintShadow(this, g);
        }
      }

      if (myImage != null && myAlpha != -1) {
        paintShadow(g);
        StartupUiUtil.drawImage(g2d, myImage, 0, 0, null);
      }
      else {
        paintShadow(g);
        myBalloon.myPosition.paintComponent(myBalloon, shapeBounds, (Graphics2D)g, pointTarget);
      }
    }
@Override
    protected void paintComponent(final Graphics g)