docs: private void _createNotification(final Context context, final Bundle extras, final int notificationId) {
          //noinspection ConstantConditions
          if (extras == null || extras.get(Constants.NOTIFICATION_TAG) == null) {
              return;
          }
  
          if (config.isAnalyticsOnly()) {
              getConfigLogger().debug(getAccountId(), "Instance is set for Analytics only, cannot create notification");
              return;
          }
  
          try {
              postAsyncSafely("CleverTapAPI#_createNotification", new Runnable() {
                  @Override
                  public void run() {
                      try {
                          getConfigLogger().debug(getAccountId(), "Handling notification: " + extras.toString());
                          dbAdapter = loadDBAdapter(context);
                          if(extras.getString("wzrk_pid") != null) {
                              if (dbAdapter.doesPushNotificationIdExist(extras.getString("wzrk_pid"))){
                                  getConfigLogger().debug(getAccountId(),"Push Notification Already rendered, not showing again");
                                  return;
                              }
                          }
                          // Check if this is a test notification
                          if (extras.containsKey(Constants.DEBUG_KEY)
                                  && "y".equals(extras.getString(Constants.DEBUG_KEY))) {
                              int r = (int) (Math.random() * 10);
                              if (r != 8) {
                                  // Discard acknowledging this notif
                                  return;
                              }
                              JSONObject event = new JSONObject();
                              try {
                                  JSONObject actions = new JSONObject();
                                  for (String x : extras.keySet()) {
                                      Object value = extras.get(x);
                                      actions.put(x, value);
                                  }
                                  event.put("evtName", "wzrk_d");
                                  event.put("evtData", actions);
                                  queueEvent(context, event, Constants.RAISED_EVENT);
                              } catch (JSONException ignored) {
                                  // Won't happen
                              }
                              // Drop further processing
                              return;
                          }
                          String notifMessage = extras.getString("nm");
                          notifMessage = (notifMessage != null) ? notifMessage : "";
                          if (notifMessage.isEmpty()) {
                              getConfigLogger().verbose(getAccountId(),"Push notification message is empty, not rendering");
                              loadDBAdapter(context).storeUninstallTimestamp();
                              return;
                          }
                          String notifTitle = extras.getString("nt", "");
                          notifTitle = notifTitle.isEmpty() ? context.getApplicationInfo().name : notifTitle;
                          triggerNotification(context, extras, notifMessage, notifTitle, notificationId);
                      } catch (Throwable t) {
                          // Occurs if the notification image was null
                          // Let's return, as we couldn't get a handle on the app's icon
                          // Some devices throw a PackageManager* exception too
                          getConfigLogger().debug(getAccountId(),"Couldn't render notification: ", t);
                      }
                  }
              });
          } catch (Throwable t) {
              getConfigLogger().debug(getAccountId(), "Failed to process push notification", t);
          }
      }