Buggy code:
public class SoundsManager implements SoundsDataAccess , SoundsDataStorage , SoundsDataUtil { private static final String TAG = SoundsManager . class . getName ( ) ; EventBus eventBus ; private DaoSession dbPlaylist ; private DaoSession dbSounds ; private Map < String , List < EnhancedMediaPlayer > > sounds ; private List < EnhancedMediaPlayer > playlist ; private Set < EnhancedMediaPlayer > currentlyPlayingSounds ; private boolean isInitDone ; public SoundsManager ( ) { } public DaoSession getDbSounds ( ) { } public DaoSession getDbPlaylist ( ) { } @ Override public void init ( ) { } @ Override public boolean isInit ( ) { } @ Override public void release ( ) { } private void releaseMediaPlayers ( ) { } @ Override public boolean isPlaylistPlayer ( MediaPlayerData playerData ) { } @ Override public Set < EnhancedMediaPlayer > getCurrentlyPlayingSounds ( ) { } @ Override public List < EnhancedMediaPlayer > getPlaylist ( ) { } @ Override public Map < String , List < EnhancedMediaPlayer > > getSounds ( ) { } @ Override public List < EnhancedMediaPlayer > getSoundsInFragment ( String fragmentTag ) { } @ Override public EnhancedMediaPlayer getSoundById ( String fragmentTag , String playerId ) { } @ Override public void createSoundAndAddToManager ( MediaPlayerData data ) { } @ Override public void createPlaylistSoundAndAddToManager ( MediaPlayerData data ) { } @ Override public void toggleSoundInPlaylist ( String playerId , boolean addToPlaylist ) { } private void addSoundToPlayList ( EnhancedMediaPlayer player ) { } private void addSoundToSounds ( EnhancedMediaPlayer player ) { } @ Override public void removeSounds ( List < EnhancedMediaPlayer > soundsToRemove ) { if ( ( soundsToRemove == null ) || ( ( soundsToRemove . size ( ) ) == 0 ) ) return ; List < EnhancedMediaPlayer > copyList = new java . util . ArrayList ( soundsToRemove . size ( ) ) ; copyList . addAll ( soundsToRemove ) ; for ( EnhancedMediaPlayer playerToRemove : copyList ) { MediaPlayerData data = playerToRemove . getMediaPlayerData ( ) ; this . sounds . get ( data . getFragmentTag ( ) ) . remove ( playerToRemove ) ; if ( data . getIsInPlaylist ( ) ) { EnhancedMediaPlayer correspondingPlayerInPlaylist = SoundsManagerUtil . searchInListForId ( data . getPlayerId ( ) , this . playlist ) ; if ( correspondingPlayerInPlaylist != null ) { this . playlist . remove ( correspondingPlayerInPlaylist ) ; this . removeSoundFromDatabase ( this . getDbPlaylist ( ) . getMediaPlayerDataDao ( ) , correspondingPlayerInPlaylist . getMediaPlayerData ( ) ) ; correspondingPlayerInPlaylist . destroy ( true ) ; } } this . removeSoundFromDatabase ( this . getDbSounds ( ) . getMediaPlayerDataDao ( ) , playerToRemove . getMediaPlayerData ( ) ) ; playerToRemove . destroy ( true ) ; } <START_BUG> this . eventBus . post ( new SoundsRemovedEvent ( soundsToRemove ) ) ; <END_BUG> } @ Override public void removeSoundsFromPlaylist ( List < EnhancedMediaPlayer > soundsToRemove ) { } @ Override public void moveSoundInFragment ( String fragmentTag , int from , int to ) { } private EnhancedMediaPlayer createPlaylistSound ( MediaPlayerData playerData ) { } private EnhancedMediaPlayer createSound ( MediaPlayerData playerData ) { } @ Override public void removeSoundDataFromDatabase ( MediaPlayerData playerData ) { } @ Override public void removePlaylistDataFromDatabase ( MediaPlayerData playerData ) { } private void removeSoundFromDatabase ( MediaPlayerDataDao dao , MediaPlayerData playerData ) { } }

Fix:
this . eventBus . post ( new SoundsRemovedEvent ( copyList ) ) ;