Buggy code:
private long mLeagueId = - 1 ; private long mSeriesId = - 1 ; private long mGameId = - 1 ; private byte mNumberOfGames = - 1 ; private String mBowlerName ; private String mLeagueName ; private String mSeriesDate ; private byte mGameNumber ; private boolean mIsEventMode ; private boolean mIsQuickSeries ; private ConcurrentLinkedQueue < Thread > mQueueSavingThreads ; private Thread runningSaveThread ; private AtomicBoolean appIsRunning = new AtomicBoolean ( false ) ; private DrawerLayout mDrawerLayout ; private ListView mDrawerList ; private DrawerAdapter mDrawerAdapter ; private ActionBarDrawerToggle mDrawerToggle ; private int mDrawerTitle ; private int mTitle ; private List < String > mListDrawerOptions ; @ Override protected void onCreate ( Bundle savedInstanceState ) { } @ Override protected void onPostCreate ( Bundle savedInstanceState ) { } @ Override public void onConfigurationChanged ( Configuration newConfig ) { } @ Override protected void onSaveInstanceState ( Bundle outState ) { } @ Override protected void onResume ( ) { } @ Override protected void onPause ( ) { } @ Override protected void onDestroy ( ) { } @ Override public boolean onCreateOptionsMenu ( Menu menu ) { } @ Override public boolean onPrepareOptionsMenu ( Menu menu ) { } @ Override public boolean onOptionsItemSelected ( MenuItem item ) { } @ Override public void onBackStackChanged ( ) { if ( ( mListDrawerOptions . size ( ) ) > 2 ) mListDrawerOptions . subList ( 2 , mListDrawerOptions . size ( ) ) . clear ( ) ; List < Fragment > fragments = getSupportFragmentManager ( ) . getFragments ( ) ; for ( Fragment fragment : fragments ) { if ( ( ( fragment == null ) || ( ! ( fragment . isVisible ( ) ) ) ) || ( ( fragment . getTag ( ) ) == null ) ) continue ; if ( fragment . getTag ( ) . equals ( FRAGMENT_BOWLERS ) ) { mBowlerId = - 1 ; mLeagueId = - 1 ; mSeriesId = - 1 ; mGameId = - 1 ; mGameNumber = - 1 ; mBowlerName = null ; mLeagueName = null ; mSeriesDate = null ; mNumberOfGames = - 1 ; mIsQuickSeries = false ; } if ( fragment . getTag ( ) . equals ( FRAGMENT_LEAGUES ) ) { mListDrawerOptions . add ( NAV_OPTION_LEAGUES_EVENTS ) ; mLeagueId = - 1 ; mSeriesId = - 1 ; mGameId = - 1 ; mGameNumber = - 1 ; mLeagueName = null ; mSeriesDate = null ; mNumberOfGames = - 1 ; } else if ( fragment . getTag ( ) . equals ( FRAGMENT_SERIES ) ) { mListDrawerOptions . add ( NAV_OPTION_LEAGUES_EVENTS ) ; mListDrawerOptions . add ( NAV_OPTION_SERIES ) ; mSeriesId = - 1 ; mGameId = - 1 ; mGameNumber = - 1 ; mSeriesDate = null ; } else if ( fragment . getTag ( ) . equals ( FRAGMENT_GAME ) ) { if ( ! ( isQuickSeries ( ) ) ) mListDrawerOptions . add ( NAV_OPTION_LEAGUES_EVENTS ) ; if ( ( ! ( isEventMode ( ) ) ) && ( ! ( isQuickSeries ( ) ) ) ) mListDrawerOptions . add ( NAV_OPTION_SERIES ) ; mListDrawerOptions . add ( NAV_OPTION_GAME_DETAILS ) ; for ( byte i = 0 ; i < ( mNumberOfGames ) ; i ++ ) mListDrawerOptions . add ( ( "Game<seq2seq4repair_space>" + ( i + 1 ) ) ) ; mGameId = - 1 ; mGameNumber = - 1 ; } else if ( fragment . getTag ( ) . equals ( FRAGMENT_STATS ) ) { if ( ( ( mLeagueId ) >= 0 ) && ( ! ( isQuickSeries ( ) ) ) ) mListDrawerOptions . add ( NAV_OPTION_LEAGUES_EVENTS ) ; if ( ( ( ( mSeriesId ) >= 0 ) && ( ! ( isEventMode ( ) ) ) ) && ( ! ( isQuickSeries ( ) ) ) ) mListDrawerOptions . add ( NAV_OPTION_SERIES ) ; <START_BUG> if ( ( mGameId ) >= 0 ) <END_BUG> mListDrawerOptions . add ( NAV_OPTION_GAME_DETAILS ) ; mListDrawerOptions . add ( NAV_OPTION_STATS ) ; } break ; } mDrawerAdapter . notifyDataSetChanged ( ) ; } @ Override public void updateTheme ( ) { } @ Override public void onBowlerSelected ( long bowlerId , String bowlerName , boolean openLeagueFragment , boolean isQuickSeries ) { } @ Override public void onLeagueSelected ( long leagueId , String leagueName , byte numberOfGames , boolean openSeriesFragment ) { } @ Override public void onSeriesSelected ( long seriesId , String seriesDate , boolean isEvent ) { } @ Override public void onCreateNewSeries ( boolean isEvent ) { } private void startFragmentTransaction ( Fragment fragment , String backStackTag , String fragmentTag ) { } @ Override public void onBowlerStatsOpened ( ) { } @ Override public void onLeagueStatsOpened ( ) { } @ Override public void onSeriesStatsOpened ( ) { } @ Override public void onGameStatsOpened ( long gameId , byte gameNumber ) { } @ Override public void onGameItemClicked ( byte gameNumber ) { } @ SuppressWarnings ( { "IfCanBeSwitch" , "StringEquality" } ) @ Override public void onFragmentItemClicked ( String fragmentItem ) { } private void openStatsFragment ( String tag ) { } public void setActionBarTitle ( int resId , boolean override ) { } public long getBowlerId ( ) { } public long getLeagueId ( ) { } public long getSeriesId ( ) { } public byte getNumberOfGames ( ) { } public String getBowlerName ( ) { } public String getLeagueName ( ) { } public long getGameId ( ) { } public byte getGameNumber ( ) { } public String getSeriesDate ( ) { } public boolean isDrawerOpen ( ) { } public boolean isEventMode ( ) { } public boolean isQuickSeries ( ) { } private class OpenSeriesTask extends AsyncTask < Boolean , Void , Object [ ] > { @ Override protected Object [ ] doInBackground ( Boolean ... isEvent ) { } @ Override protected void onPostExecute ( Object [ ] params ) { }

Fix:
if ( ( mSeriesId ) >= 0 )