@Contract("null -> null; !null -> !null")
  default Icon replaceIcon(Icon icon) {
    if (icon instanceof ReplaceableIcon) {
      return ((ReplaceableIcon)icon).replaceBy(this);
    }
    return icon;
  }
@Contract("null -> null; !null -> !null")
  default Icon replaceIcon(Icon icon)