@Override
    public Insets getInsets(Insets insets) {
      final Insets result = super.getInsets(insets);

      if (UIUtil.isUnderNimbusLookAndFeel() && !isSmallVariant()) {
        result.top += 2;
        result.left += 8;
        result.bottom += 2;
        result.right += 4 + ARROW_ICON.getIconWidth();
      } else {
        result.right += ARROW_ICON.getIconWidth();
      }

      return result;
    }
 @Override
 public Dimension getPreferredSize() {
   final boolean isEmpty = getIcon() == null && StringUtil.isEmpty(getText());
   int width = isEmpty ? 10 + ARROW_ICON.getIconWidth() : super.getPreferredSize().width;
   if (isSmallVariant()) width += 4;
   return new Dimension(
       width, isSmallVariant() ? 19 : UIUtil.isUnderNimbusLookAndFeel() ? 24 : 21);
 }
 @Override
 public Insets getInsets() {
   final Insets insets = super.getInsets();
   return new Insets(
       insets.top, insets.left, insets.bottom, insets.right + ARROW_ICON.getIconWidth());
 }