class BorderImageOutset extends AbstractCssProperty<BorderImageOutset> {

    protected static String getProducedCssValue(final Float top,
            final CssLengthUnit topUnit, final Float right,
            final CssLengthUnit rightUnit, final Float bottom,
            final CssLengthUnit bottomUnit, final Float left,
            final CssLengthUnit leftUnit) {

        if ((ObjectUtil.isEqual(top, right)
                && Objects.equals(topUnit, rightUnit))
                && (ObjectUtil.isEqual(right, bottom)
                        && ObjectUtil.isEqual(rightUnit, bottomUnit))
                && (ObjectUtil.isEqual(bottom, left)
                        && Objects.equals(bottomUnit, leftUnit))) {

            return top != null && topUnit != null
                    ? String.valueOf(top).concat(topUnit.getUnit())
                    : top != null ? String.valueOf(top) : DEFAULT_VALUE;

        } else if ((ObjectUtil.isEqual(top, bottom)
                && Objects.equals(topUnit, bottomUnit))
                && (ObjectUtil.isEqual(right, left)
                        && Objects.equals(rightUnit, leftUnit))) {

            final StringBuilder cssValueBuilder = new StringBuilder();
            if (top != null) {
                cssValueBuilder.append(top);
                if (topUnit != null) {
                    cssValueBuilder.append(topUnit.getUnit());
                }
            }

            cssValueBuilder.append(' ');

            if (right != null) {
                cssValueBuilder.append(right);
                if (rightUnit != null) {
                    cssValueBuilder.append(rightUnit.getUnit());
                }
            }

            return cssValueBuilder.toString();

        } else if ((ObjectUtil.isEqual(right, left)
                && Objects.equals(rightUnit, leftUnit))) {
            final StringBuilder cssValueBuilder = new StringBuilder();
            if (top != null) {
                cssValueBuilder.append(top);
                if (topUnit != null) {
                    cssValueBuilder.append(topUnit.getUnit());
                }
            }

            cssValueBuilder.append(' ');

            if (right != null) {
                cssValueBuilder.append(right);
                if (rightUnit != null) {
                    cssValueBuilder.append(rightUnit.getUnit());
                }
            }

            cssValueBuilder.append(' ');

            if (bottom != null) {
                cssValueBuilder.append(bottom);
                if (bottomUnit != null) {
                    cssValueBuilder.append(bottomUnit.getUnit());
                }
            }

            return cssValueBuilder.toString();

        } else {
            final StringBuilder cssValueBuilder = new StringBuilder();
            if (top != null) {
                cssValueBuilder.append(top);
                if (topUnit != null) {
                    cssValueBuilder.append(topUnit.getUnit());
                }
            }

            cssValueBuilder.append(' ');

            if (right != null) {
                cssValueBuilder.append(right);
                if (rightUnit != null) {
                    cssValueBuilder.append(rightUnit.getUnit());
                }
            }

            cssValueBuilder.append(' ');

            if (bottom != null) {
                cssValueBuilder.append(bottom);
                if (bottomUnit != null) {
                    cssValueBuilder.append(bottomUnit.getUnit());
                }
            }

            cssValueBuilder.append(' ');

            if (left != null) {
                cssValueBuilder.append(left);
                if (leftUnit != null) {
                    cssValueBuilder.append(leftUnit.getUnit());
                }
            }
            return cssValueBuilder.toString();
        }
    }

    public  BorderImageOutset();
    public  BorderImageOutset(final String cssValue);
    public  BorderImageOutset(final BorderImageOutset bottom);
    public  BorderImageOutset(final float percent);
    public  BorderImageOutset(final float value,
            final CssLengthUnit cssLengthUnit);

}