class BorderColorCssValues extends AbstractBean<BorderColorCssValues> implements StateChangeInformer<Bean> {

    public void setRgbaCssValue(final RgbaCssValue rgbaCssValue) {
        if (rgbaCssValue == null) {
            throw new NullValueException("rgbaCssValue can not be null");
        }
        if (this.rgbaCssValue != null) {
            if (rgbaCssValue.isAlreadyInUse() && !Objects.equals(
                    this.rgbaCssValue.getStateChangeInformer(),
                    rgbaCssValue.getStateChangeInformer())) {
                try {
                    final RgbaCssValue rgbaCssValueClone = CloneUtil
                            .deepClone(rgbaCssValue);
                    this.rgbaCssValue.setAlreadyInUse(false);
                    this.rgbaCssValue = rgbaCssValueClone;
                    if (LOGGER.isLoggable(Level.WARNING)) {
                        LOGGER.warning("cloned rgbaCssValue " + rgbaCssValue
                                + "(hashcode: " + rgbaCssValue.hashCode()
                                + ") as it is already used by another object");
                    }
                } catch (final CloneNotSupportedException e) {
                    throw new InvalidValueException(e.toString());
                }
            } else {
                this.rgbaCssValue.setAlreadyInUse(false);
                this.rgbaCssValue = rgbaCssValue;
            }
        } else {
            if (rgbaCssValue.isAlreadyInUse()) {
                try {
                    this.rgbaCssValue = CloneUtil.deepClone(rgbaCssValue);
                    if (LOGGER.isLoggable(Level.WARNING)) {
                        LOGGER.warning("cloned rgbaCssValue " + rgbaCssValue
                                + "(hashcode: " + rgbaCssValue.hashCode()
                                + ") as it is already used by another object");
                    }
                } catch (final CloneNotSupportedException e) {
                    throw new InvalidValueException(e.toString());
                }
            } else {
                this.rgbaCssValue = rgbaCssValue;
            }
        }
        cssValue = this.rgbaCssValue.getValue();
        this.rgbaCssValue.setStateChangeInformer(this);
        this.rgbaCssValue.setAlreadyInUse(true);
        makeRgbCssValueNull();
        makeHslCssValueNull();
        makeHslaCssValueNull();
    }

    public  BorderColorCssValues();
    public  BorderColorCssValues(final String cssValue);
    public  BorderColorCssValues(
            final BorderColorCssValues borderColorCssValue);
    public  BorderColorCssValues(final RgbCssValue rgbCssValue);
    public  BorderColorCssValues(final RgbaCssValue rgbaCssValue);
    public  BorderColorCssValues(final HslCssValue hslCssValue);
    public  BorderColorCssValues(final HslaCssValue hslaCssValue);

}