internal void Update(
            Context context, Kind kind, NotifyEvents notifyEvents, string contentFormat, params object[] args)
        {
            // Sometimes exception messages contain curly braces, which confuses string.Format
            this.ContentText = args.Length > 0 ? string.Format(CurrentCulture, contentFormat, args) : contentFormat;
            var showPopup = (int)kind >= (int)notifyEvents;

            if (showPopup)
            {
                #pragma warning disable CS0618                                                                      // Type or member is obsolete
                using (var builder = new Android.App.Notification.Builder(context))
                                                                                     #pragma warning restore CS0618 // Type or member is obsolete
                    using (var intent = new Intent(context, this.activityType))
                        using (var style = new Android.App.Notification.BigTextStyle())
                        {
                            // This is necessary so that the intent object is going to be interpreted as a new intent rather than
                            // an update to an existing intent.
                            intent.SetAction(this.id.ToString());

                            this.addArguments(intent);
                            builder
                            .SetSmallIcon(Resource.Drawable.ic_stat_name)
                            .SetContentTitle(this.title)
                            .SetContentText(this.ContentText)
                            .SetContentIntent(PendingIntent.GetActivity(context, 0, intent, 0))
                            .SetStyle(style.BigText(this.ContentText))
                            .SetAutoCancel(true);
                            SetLights(builder, kind);
                            this.manager.Notify(this.id, builder.Build());
                        }
            }

            Info("Notification{0}: {1}", showPopup ? " (shown in popup)" : string.Empty, this.ContentText);
        }