@Override
  public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
    OPFLog.logMethod(context, OPFUtils.toString(intent));

    final OPFPushHelper helper = OPFPush.getHelper();
    final String action = intent.getAction();
    if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
      final String providerName = helper.getProviderNameByHostApp(getAppPackage(intent));
      if (providerName == null) {
        return;
      }
      checkCurrentProvider(context, providerName);
    } else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)
        && context.getPackageName().equals(getAppPackage(intent))) {
      OPFLog.d("Application updated.");
      helper.onNeedRetryRegistration();
    }
  }
  private void checkCurrentProvider(
      @NonNull final Context context, @NonNull final String providerName) {
    final OPFPushHelper helper = OPFPush.getHelper();
    final PushProvider currentProvider = helper.getCurrentProvider();
    if (currentProvider == null) {
      return;
    }

    final String currentProviderName = currentProvider.getName();
    if (providerName.equals(currentProviderName)) {
      OPFLog.i("Host app of provider '%s' has been removed.", currentProviderName);
      clearSettingsForProvider(context, currentProviderName);
      RetryManager.getInstance().cancelRetryAllOperations(providerName);
      helper.registerNextAvailableProvider(currentProviderName);
    }
  }
 @Override
 public void remove() {
   OPFLog.logStubCall();
 }
 @Override
 public void setZIndex(final float zIndex) {
   OPFLog.logStubCall(zIndex);
 }
 @Override
 public void setVisible(final boolean visible) {
   OPFLog.logStubCall(visible);
 }
 @Override
 public void setTransparency(final float transparency) {
   OPFLog.logStubCall(transparency);
 }
 @Override
 public void setPositionFromBounds(@NonNull final OPFLatLngBounds bounds) {
   OPFLog.logStubCall(bounds);
 }
 @Override
 public void setPosition(@NonNull final OPFLatLng latLng) {
   OPFLog.logStubCall(latLng);
 }
 @Override
 public void setFadeIn(final boolean fadeIn) {
   OPFLog.logStubCall(fadeIn);
 }
 @Override
 public boolean isVisible() {
   OPFLog.logStubCall();
   return false;
 }
 @Override
 public float getZIndex() {
   OPFLog.logStubCall();
   return 0;
 }
 @NonNull
 @Override
 public String getId() {
   OPFLog.logStubCall();
   return "";
 }
 @SuppressWarnings("PMD.BooleanGetMethodName")
 @Override
 public boolean getFadeIn() {
   OPFLog.logStubCall();
   return false;
 }
 @Override
 public void clearTileCache() {
   OPFLog.logStubCall();
 }
 @Override
 public void setBearing(final float bearing) {
   OPFLog.logStubCall(bearing);
 }
 @Override
 public void setDimensions(final float width, final float height) {
   OPFLog.logStubCall(width, height);
 }
 @Override
 public void setImage(@NonNull final OPFBitmapDescriptor image) {
   OPFLog.logStubCall(image);
 }