docs: static synchronized void setRetryBroadcastReceiver(Context context) {
          if (sRetryReceiver == null) {
              if (sRetryReceiverClassName == null) {
                  // should never happen
                  Log.e(TAG, "internal error: retry receiver class not set yet");
                  sRetryReceiver = new GCMBroadcastReceiver();
              } else {
                  Class<?> clazz;
                  try {
                      clazz = Class.forName(sRetryReceiverClassName);
                      sRetryReceiver = (GCMBroadcastReceiver) clazz.newInstance();
                  } catch (Exception e) {
                      Log.e(TAG, "Could not create instance of " +
                              sRetryReceiverClassName + ". Using " +
                              GCMBroadcastReceiver.class.getName() +
                              " directly.");
                      sRetryReceiver = new GCMBroadcastReceiver();
                  }
              }
              String category = context.getPackageName();
              IntentFilter filter = new IntentFilter(
                      GCMConstants.INTENT_FROM_GCM_LIBRARY_RETRY);
              filter.addCategory(category);
              // must use a permission that is defined on manifest for sure
              String permission = category + ".permission.C2D_MESSAGE";
              Log.v(TAG, "Registering receiver");
              context.registerReceiver(sRetryReceiver, filter, permission, null);
          }
      }