Buggy code:
public abstract class ClientSOContainer extends SOContainer { protected ISynchAsynchConnection connection ; protected ID remoteServerID ; protected byte connectionState ; public static final byte DISCONNECTED = 0 ; public static final byte CONNECTING = 1 ; public static final byte CONNECTED = 2 ; static final class Lock { } protected ClientSOContainer . Lock connectLock ; protected ClientSOContainer . Lock getConnectLock ( ) { } protected ISynchAsynchConnection getConnection ( ) { } public ClientSOContainer ( ISharedObjectContainerConfig config ) { } public void dispose ( ) { } public final boolean isGroupManager ( ) { } public ID getConnectedID ( ) { } protected Callback [ ] createAuthorizationCallbacks ( ) { } private void setStateDisconnected ( ISynchAsynchConnection conn ) { } private void setStateConnecting ( ISynchAsynchConnection conn ) { } private void setStateConnected ( ID serverID , ISynchAsynchConnection conn ) { } public void connect ( ID remote , IConnectContext joinContext ) throws ContainerConnectException { } protected int getConnectTimeout ( ) { } protected void handleLeaveGroupMessage ( ContainerMessage mess ) { if ( ! ( isConnected ( ) ) ) return ; ContainerMessage . LeaveGroupMessage lgm = ( ( ContainerMessage . LeaveGroupMessage ) ( mess . getData ( ) ) ) ; ID fromID = mess . getFromContainerID ( ) ; if ( ( fromID == null ) || ( ! ( fromID . equals ( remoteServerID ) ) ) ) { return ; } debug ( ( "We've<seq2seq4repair_space>been<seq2seq4repair_space>ejected<seq2seq4repair_space>from<seq2seq4repair_space>group<seq2seq4repair_space>" + ( remoteServerID ) ) ) ; synchronized ( getGroupMembershipLock ( ) ) { memberLeave ( fromID , connection ) ; } <START_BUG> fireContainerEvent ( new org . eclipse . ecf . core . events . ContainerEjectedEvent ( fromID , getID ( ) , lgm . getData ( ) ) ) ; <END_BUG> } protected void handleViewChangeMessage ( ContainerMessage mess ) throws IOException { } protected void forwardExcluding ( ID from , ID excluding , ContainerMessage data ) throws IOException { } protected Object createConnectData ( ID target , Callback [ ] cbs , Object data ) { } protected Serializable getLeaveData ( ID target ) { } public void disconnect ( ) { } protected abstract ISynchAsynchConnection createConnection ( ID remoteSpace , Object data ) throws ConnectionInstantiationException { } protected void queueContainerMessage ( ContainerMessage message ) throws IOException { } protected void forwardExcluding ( ID from , ID excluding , byte msg , Serializable data ) throws IOException { } protected void forwardToRemote ( ID from , ID to , ContainerMessage message ) throws IOException { } protected ID getIDForConnection ( IAsynchConnection conn ) { } protected void memberLeave ( ID fromID , IAsynchConnection conn ) { } protected void sendMessage ( ContainerMessage data ) throws IOException { } protected ID [ ] sendCreateMsg ( ID toID , SharedObjectDescription createInfo ) throws IOException { } protected void processDisconnect ( DisconnectConnectionEvent evt ) { } protected void processAsynch ( AsynchConnectionEvent evt ) throws IOException { } protected Serializable processSynch ( SynchConnectionEvent evt ) throws IOException { } protected boolean isConnected ( ) { } protected boolean isConnecting ( ) { } private void checkConnected ( ) throws ConnectException { } protected ID handleConnectResponse ( ID orginalTarget , Object serverData ) throws Exception { } }

Fix:
fireContainerEvent ( new org . eclipse . ecf . core . events . ContainerEjectedEvent ( getID ( ) , fromID , lgm . getData ( ) ) ) ;