public final boolean equals(Object obj)
    {
        if(this == obj)
            return true;
        if(obj == null)
            return false;
        if(getClass() != obj.getClass())
            return false;
        C c = (C)obj;
        if(I == null)
        {
            if(c.I != null)
                return false;
        } else
        if(!I.equals(c.I))
            return false;
        return true;
    }