docs: protected void handleDrawerNavigation(Activity activity, boolean recreateActionBarDrawerToggle) {
          //set the navigationOnClickListener
          final View.OnClickListener toolbarNavigationListener = new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  boolean handled = false;
  
                  if (mOnDrawerNavigationListener != null && (mActionBarDrawerToggle != null && !mActionBarDrawerToggle.isDrawerIndicatorEnabled())) {
                      handled = mOnDrawerNavigationListener.onNavigationClickListener(v);
                  }
                  if (!handled) {
                      if (mDrawerLayout.isDrawerOpen(mDrawerGravity)) {
                          mDrawerLayout.closeDrawer(mDrawerGravity);
                      } else {
                          mDrawerLayout.openDrawer(mDrawerGravity);
                      }
                  }
              }
          };
  
          if (recreateActionBarDrawerToggle) {
              mActionBarDrawerToggle = null;
          }
  
          // create the ActionBarDrawerToggle if not set and enabled and if we have a toolbar
          if (mActionBarDrawerToggleEnabled && mActionBarDrawerToggle == null && mToolbar != null) {
              this.mActionBarDrawerToggle = new ActionBarDrawerToggle(activity, mDrawerLayout, mToolbar, R.string.material_drawer_open, R.string.material_drawer_close) {
                  @Override
                  public void onDrawerOpened(View drawerView) {
                      if (mOnDrawerListener != null) {
                          mOnDrawerListener.onDrawerOpened(drawerView);
                      }
                      super.onDrawerOpened(drawerView);
                  }
  
                  @Override
                  public void onDrawerClosed(View drawerView) {
                      if (mOnDrawerListener != null) {
                          mOnDrawerListener.onDrawerClosed(drawerView);
                      }
                      super.onDrawerClosed(drawerView);
                  }
  
                  @Override
                  public void onDrawerSlide(View drawerView, float slideOffset) {
                      if (mOnDrawerListener != null) {
                          mOnDrawerListener.onDrawerSlide(drawerView, slideOffset);
                      }
  
                      if (!mAnimateActionBarDrawerToggle) {
                          super.onDrawerSlide(drawerView, 0);
                      } else {
                          super.onDrawerSlide(drawerView, slideOffset);
                      }
                  }
              };
              this.mActionBarDrawerToggle.syncState();
          }
  
          //if we got a toolbar set a toolbarNavigationListener
          //we also have to do this after setting the ActionBarDrawerToggle as this will overwrite this
          if (mToolbar != null) {
              this.mToolbar.setNavigationOnClickListener(toolbarNavigationListener);
          }
  
          //handle the ActionBarDrawerToggle
          if (mActionBarDrawerToggle != null) {
              mActionBarDrawerToggle.setToolbarNavigationClickListener(toolbarNavigationListener);
              mDrawerLayout.addDrawerListener(mActionBarDrawerToggle);
          } else {
              mDrawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {
                  @Override
                  public void onDrawerSlide(View drawerView, float slideOffset) {
                      if (mOnDrawerListener != null) {
                          mOnDrawerListener.onDrawerSlide(drawerView, slideOffset);
                      }
                  }
  
                  @Override
                  public void onDrawerOpened(View drawerView) {
                      if (mOnDrawerListener != null) {
                          mOnDrawerListener.onDrawerOpened(drawerView);
                      }
                  }
  
                  @Override
                  public void onDrawerClosed(View drawerView) {
                      if (mOnDrawerListener != null) {
                          mOnDrawerListener.onDrawerClosed(drawerView);
                      }
                  }
  
                  @Override
                  public void onDrawerStateChanged(int newState) {
  
                  }
              });
          }
      }