@Override
  public boolean equals(Object other) {
    if (other == this) {
      return true;
    }

    if (other instanceof NSNotification) {
      NSNotification otherNotification = (NSNotification) other;
      if ((name().equals(otherNotification.name())) && (object() == otherNotification.object())) {
        NSDictionary<String, ?> userInfo = userInfo();
        NSDictionary<String, ?> otherUserInfo = otherNotification.userInfo();
        if (userInfo != otherUserInfo) {
          return (((userInfo == null) || (otherUserInfo == null)) ? false : userInfo.equals(otherUserInfo));
        }

        return true;
      }
    }
    return false;
  }