@Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final CToJavaMessage other = (CToJavaMessage) obj;
        if (this.Z != other.Z) {
            return false;
        }
        if (this.I != other.I) {
            return false;
        }
        if (this.G != other.G) {
            return false;
        }
        if (this.bodyLength != other.bodyLength) {
            return false;
        }
        if (this.body != other.body && (this.body == null ||
                !Arrays.equals(this.body, other.body))) {
            return false;
        }
        return true;
    }