@Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;

    DefaultBuildType buildType = (DefaultBuildType) o;

    if (!mName.equals(buildType.mName)) return false;
    if (mDebuggable != buildType.mDebuggable) return false;
    if (mTestCoverageEnabled != buildType.mTestCoverageEnabled) return false;
    if (mJniDebuggable != buildType.mJniDebuggable) return false;
    if (mRenderscriptDebuggable != buildType.mRenderscriptDebuggable) return false;
    if (mRenderscriptOptimLevel != buildType.mRenderscriptOptimLevel) return false;
    if (mMinifyEnabled != buildType.mMinifyEnabled) return false;
    if (mZipAlignEnabled != buildType.mZipAlignEnabled) return false;
    if (mApplicationIdSuffix != null
        ? !mApplicationIdSuffix.equals(buildType.mApplicationIdSuffix)
        : buildType.mApplicationIdSuffix != null) return false;
    if (mVersionNameSuffix != null
        ? !mVersionNameSuffix.equals(buildType.mVersionNameSuffix)
        : buildType.mVersionNameSuffix != null) return false;
    if (mSigningConfig != null
        ? !mSigningConfig.equals(buildType.mSigningConfig)
        : buildType.mSigningConfig != null) return false;
    if (mEmbedMicroApp != buildType.mEmbedMicroApp) return false;

    return true;
  }