@java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.vertexai.api.IntegratedGradientsAttribution)) {
      return super.equals(obj);
    }
    com.google.cloud.vertexai.api.IntegratedGradientsAttribution other =
        (com.google.cloud.vertexai.api.IntegratedGradientsAttribution) obj;

    if (getStepCount() != other.getStepCount()) return false;
    if (hasSmoothGradConfig() != other.hasSmoothGradConfig()) return false;
    if (hasSmoothGradConfig()) {
      if (!getSmoothGradConfig().equals(other.getSmoothGradConfig())) return false;
    }
    if (hasBlurBaselineConfig() != other.hasBlurBaselineConfig()) return false;
    if (hasBlurBaselineConfig()) {
      if (!getBlurBaselineConfig().equals(other.getBlurBaselineConfig())) return false;
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }
<pre>
Config for IG with blur baseline.

When enabled, a linear path from the maximally blurred image to the input
image is created. Using a blurred baseline instead of zero (black image) is
motivated by the BlurIG approach explained here:
https://arxiv.org/abs/2004.03383
</pre>

<code>.google.cloud.vertexai.v1.BlurBaselineConfig blur_baseline_config = 3;</code>
java-vertexai/proto-google-cloud-vertexai-v1/src/main/java/com/google/cloud/vertexai/api/IntegratedGradientsAttribution.java