class GrayColor extends ExtendedColor {

    public static final GrayColor GRAYBLACK = new GrayColor(0);
    public static final GrayColor GRAYWHITE = new GrayColor(MAX_FLOAT_COLOR_VALUE);
    private static final long serialVersionUID = -6571835680819282746L;
    private float gray;

    public GrayColor(int intGray) {
        this(normalize(intGray) / MAX_INT_COLOR_VALUE);
    }

    public GrayColor(float floatGray) {
        this(floatGray, MAX_FLOAT_COLOR_VALUE);
    }

    public GrayColor(int intGray, int alpha) {
        this(normalize(intGray) / MAX_INT_COLOR_VALUE, normalize(alpha) / MAX_INT_COLOR_VALUE);
    }

    public GrayColor(float floatGray, float alpha) {
        super(TYPE_GRAY, normalize(floatGray), normalize(floatGray), normalize(floatGray), normalize(alpha));
        gray = normalize(floatGray);
    }

    public float getGray() {
        return gray;
    }

    public boolean equals(Object obj) {<FILL_FUNCTION_BODY>}

    public int hashCode() {
        return Float.floatToIntBits(gray);
    }

}

        return obj instanceof GrayColor && ((GrayColor) obj).gray == this.gray;
    
<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