@Override
  public boolean equals(Object o) {
    if (o == this) {
      return true;
    }
    if (!(o instanceof Software)) {
      return false;
    }

    Software sw = (Software) o;
    return mMinSdkLevel == sw.getMinSdkLevel()
        && mMaxSdkLevel == sw.getMaxSdkLevel()
        && mLiveWallpaperSupport == sw.hasLiveWallpaperSupport()
        && mBluetoothProfiles.equals(sw.getBluetoothProfiles())
        && mGlVersion.equals(sw.getGlVersion())
        && mGlExtensions.equals(sw.getGlExtensions())
        && mStatusBar == sw.hasStatusBar();
  }