Buggy code:
IWorkbenchPage wp = ww . getActivePage ( ) ; IViewPart view = wp . showView ( "org.eclipse.ecf.ui.view.rosterview" ) ; rosterView = ( ( RosterView ) ( view ) ) ; String nickname = null ; if ( nick != null ) { nickname = nick ; } else { String name = localUser . getName ( ) ; nickname = name . substring ( 0 , name . indexOf ( "@" ) ) ; } PresenceContainerUI . this . localUser = new User ( localUser , nickname ) ; } catch ( Exception e ) { ClientPlugin . getDefault ( ) . getLog ( ) . log ( new Status ( IStatus . ERROR , ClientPlugin . PLUGIN_ID , PresenceContainerUI . SEND_ERRORCODE , "Exception<seq2seq4repair_space>showing<seq2seq4repair_space>presence<seq2seq4repair_space>view" , e ) ) ; } } } ) ; chatManager . addMessageListener ( new IIMMessageListener ( ) { public void handleMessageEvent ( final IIMMessageEvent chatMessageEvent ) { Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { if ( chatMessageEvent instanceof IChatMessageEvent ) { rosterView . handleMessageEvent ( chatMessageEvent ) ; } else if ( chatMessageEvent instanceof ITypingMessageEvent ) { rosterView . handleTyping ( chatMessageEvent . getFromID ( ) ) ; } } } ) ; } } ) ; container . addListener ( new IContainerListener ( ) { public void handleEvent ( IContainerEvent event ) { if ( event instanceof IContainerConnectedEvent ) { IContainerConnectedEvent cce = ( ( IContainerConnectedEvent ) ( event ) ) ; final ID joinedContainer = cce . getTargetID ( ) ; Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { ILocalInputHandler handler = new ILocalInputHandler ( ) { public void inputText ( ID userID , String text ) { try { if ( ( chatMessageSender ) != null ) chatMessageSender . sendChatMessage ( userID , text ) ; } catch ( ECFException e ) { ClientPlugin . getDefault ( ) . getLog ( ) . log ( new Status ( IStatus . ERROR , ClientPlugin . getDefault ( ) . getBundle ( ) . getSymbolicName ( ) , PresenceContainerUI . SEND_ERRORCODE , "Error<seq2seq4repair_space>in<seq2seq4repair_space>sendMessage" , e ) ) ; } } public void startTyping ( ID userID ) { try { if ( ( typingMessageSender ) != null ) typingMessageSender . sendTypingMessage ( userID , true , "" ) ; } catch ( ECFException e ) { ClientPlugin . getDefault ( ) . getLog ( ) . log ( new Status ( IStatus . ERROR , ClientPlugin . getDefault ( ) . getBundle ( ) . getSymbolicName ( ) , PresenceContainerUI . SEND_ERRORCODE , "Error<seq2seq4repair_space>in<seq2seq4repair_space>startTyping" , e ) ) ; } } public void disconnect ( ) { container . disconnect ( ) ; } public void updatePresence ( ID userID , IPresence presence ) { try { if ( ( presenceSender ) != null ) presenceSender . sendPresenceUpdate ( userID , presence ) ; } catch ( ECFException e ) { ClientPlugin . getDefault ( ) . getLog ( ) . log ( new Status ( IStatus . ERROR , ClientPlugin . getDefault ( ) . getBundle ( ) . getSymbolicName ( ) , PresenceContainerUI . SEND_ERRORCODE , "Error<seq2seq4repair_space>in<seq2seq4repair_space>sendPresenceUpdate" , e ) ) ; } } public void sendRosterAdd ( String user , String name , String [ ] groups ) { try { rosterSubscriptionSender . sendRosterAdd ( user , name , groups ) ; } catch ( ECFException e ) { ClientPlugin . getDefault ( ) . getLog ( ) . log ( new Status ( IStatus . ERROR , ClientPlugin . getDefault ( ) . getBundle ( ) . getSymbolicName ( ) , PresenceContainerUI . SEND_ERRORCODE , "Error<seq2seq4repair_space>in<seq2seq4repair_space>sendRosterAdd" , e ) ) ; } } public void sendRosterRemove ( ID userID ) { try { if ( ( rosterSubscriptionSender ) != null ) rosterSubscriptionSender . sendRosterRemove ( userID ) ; } catch ( ECFException e ) { ClientPlugin . getDefault ( ) . getLog ( ) . log ( new Status ( IStatus . ERROR , ClientPlugin . getDefault ( ) . getBundle ( ) . getSymbolicName ( ) , PresenceContainerUI . SEND_ERRORCODE , "Error<seq2seq4repair_space>in<seq2seq4repair_space>sendRosterRemove" , e ) ) ; } } } ; PresenceContainerUI . this . groupID = joinedContainer ; <START_BUG> rosterView . addAccount ( joinedContainer , PresenceContainerUI . this . localUser , handler , pc , soContainer ) ; <END_BUG> } } ) ; } else if ( event instanceof IContainerDisconnectedEvent ) { final IContainerDisconnectedEvent de = ( ( IContainerDisconnectedEvent ) ( event ) ) ; Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { rosterView . accountDisconnected ( de . getTargetID ( ) ) ; } } ) ; } } } ) ; pc . getRosterManager ( ) . addPresenceListener ( new IPresenceListener ( ) { public void handleRosterEntryAdd ( final IRosterEntry entry ) { Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { rosterView . handleRosterEntryAdd ( PresenceContainerUI . this . groupID , entry ) ; } } ) ; } public void handlePresence ( final ID fromID , final IPresence presence ) { Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { rosterView . handlePresence ( PresenceContainerUI . this . groupID , fromID , presence ) ; } } ) ; } public void handleRosterEntryUpdate ( final IRosterEntry entry ) { Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { rosterView . handleRosterEntryUpdate ( PresenceContainerUI . this . groupID , entry ) ; } } ) ; } public void handleRosterEntryRemove ( final IRosterEntry entry ) { Display . getDefault ( ) . syncExec ( new Runnable ( ) { public void run ( ) { rosterView . handleRosterEntryRemove ( PresenceContainerUI . this . groupID , entry ) ;

Fix:
rosterView . addAccount ( joinedContainer , PresenceContainerUI . this . localUser , handler , container , pc , soContainer ) ;