class CMYKColor extends ExtendedColor {

    private static final long serialVersionUID = 5940378778276468452L;
    float cyan;
    float magenta;
    float yellow;
    float black;

    /**
     * Constructs a CMYK Color based on 4 color values (values are integers from 0 to 255).
     *
     * @param intCyan    cyan value
     * @param intMagenta magenta value
     * @param intYellow  yellow value
     * @param intBlack   black value
     */
    public CMYKColor(int intCyan, int intMagenta, int intYellow, int intBlack) {
        this(normalize(intCyan) / MAX_INT_COLOR_VALUE, normalize(intMagenta) / MAX_INT_COLOR_VALUE,
                normalize(intYellow) / MAX_INT_COLOR_VALUE, normalize(intBlack) / MAX_INT_COLOR_VALUE);
    }

    /**
     * Constructs a CMYK Color based on 4 color values (values are integers from 0 to 255).
     *
     * @param intCyan    cyan value
     * @param intMagenta magenta value
     * @param intYellow  yellow value
     * @param intBlack   black value
     * @param intAlpha   alpha value
     */
    public CMYKColor(int intCyan, int intMagenta, int intYellow, int intBlack, int intAlpha) {
        this(normalize(intCyan) / MAX_INT_COLOR_VALUE, normalize(intMagenta) / MAX_INT_COLOR_VALUE,
                normalize(intYellow) / MAX_INT_COLOR_VALUE, normalize(intBlack) / MAX_INT_COLOR_VALUE,
                normalize(intAlpha) / MAX_INT_COLOR_VALUE);
    }

    /**
     * Construct a CMYK Color.
     *
     * @param floatCyan    cyan value
     * @param floatMagenta magenta value
     * @param floatYellow  yellow value
     * @param floatBlack   black value
     */
    public CMYKColor(float floatCyan, float floatMagenta, float floatYellow, float floatBlack) {
        this(floatCyan, floatMagenta, floatYellow, floatBlack, MAX_FLOAT_COLOR_VALUE);
    }

    /**
     * Construct a CMYK Color.
     *
     * @param floatCyan    cyan value
     * @param floatMagenta magenta value
     * @param floatYellow  yellow value
     * @param floatBlack   black value
     * @param floatAlpha   alpha value
     */
    public CMYKColor(float floatCyan, float floatMagenta, float floatYellow, float floatBlack, float floatAlpha) {
        super(TYPE_CMYK, MAX_FLOAT_COLOR_VALUE - normalize(floatCyan) - normalize(floatBlack),
                MAX_FLOAT_COLOR_VALUE - normalize(floatMagenta) - normalize(floatBlack),
                MAX_FLOAT_COLOR_VALUE - normalize(floatYellow) - normalize(floatBlack), normalize(floatAlpha));
        cyan = normalize(floatCyan);
        magenta = normalize(floatMagenta);
        yellow = normalize(floatYellow);
        black = normalize(floatBlack);
    }

    /**
     * @return the cyan value
     */
    public float getCyan() {
        return cyan;
    }

    /**
     * @return the magenta value
     */
    public float getMagenta() {
        return magenta;
    }

    /**
     * @return the yellow value
     */
    public float getYellow() {
        return yellow;
    }

    /**
     * @return the black value
     */
    public float getBlack() {
        return black;
    }

    public boolean equals(Object obj) {
        if (!(obj instanceof CMYKColor)) {
            return false;
        }
        CMYKColor c2 = (CMYKColor) obj;
        return (cyan == c2.cyan && magenta == c2.magenta && yellow == c2.yellow && black == c2.black
                && getAlpha() == c2.getAlpha());
    }

    public int hashCode() {<FILL_FUNCTION_BODY>}

}

        return Float.floatToIntBits(cyan)
                ^ Float.floatToIntBits(magenta)
                ^ Float.floatToIntBits(yellow)
                ^ Float.floatToIntBits(black)
                ^ Float.floatToIntBits(getAlpha())
                ;
    
<methods>public void <init>(int) ,public void <init>(int, float, float, float) ,public void <init>(int, float, float, float, float) ,public static int getType(java.awt.Color) ,public int getType() <variables>public static final int MAX_COLOR_VALUE,public static final float MAX_FLOAT_COLOR_VALUE,public static final float MAX_INT_COLOR_VALUE,public static final int TYPE_CMYK,public static final int TYPE_GRAY,public static final int TYPE_PATTERN,public static final int TYPE_RGB,public static final int TYPE_SEPARATION,public static final int TYPE_SHADING,private static final long serialVersionUID,protected int type