Buggy code:
protected void fireContainerEvent ( IContainerEvent event ) { } protected final void forward ( ID fromID , ID toID , ContainerMessage data ) throws IOException { } protected abstract void forwardExcluding ( ID from , ID excluding , ContainerMessage data ) throws IOException { } protected abstract void forwardToRemote ( ID from , ID to , ContainerMessage data ) throws IOException { } public Object getAdapter ( Class adapter ) { } public Object [ ] getArgsFromProperties ( SharedObjectDescription sd ) { } public String [ ] getArgTypesFromProperties ( SharedObjectDescription sd ) { } protected byte [ ] serializeObject ( Serializable obj ) throws IOException { } protected ClassLoader getClassLoaderForContainer ( ) { } protected ClassLoader getClassLoaderForSharedObject ( SharedObjectDescription sd ) { } public ISharedObjectContainerConfig getConfig ( ) { } public abstract ID getConnectedID ( ) { } public ID [ ] getGroupMemberIDs ( ) { } protected Object getGroupMembershipLock ( ) { } public ID getID ( ) { } protected int getMaxGroupMembers ( ) { } protected Thread getNewSharedObjectThread ( ID sharedObjectID , Runnable runnable ) { } protected long getNextSequenceNumber ( ) { } protected ContainerMessage deserializeContainerMessage ( byte [ ] bytes ) throws IOException { } public ID [ ] getOtherMemberIDs ( ) { } protected ISynchAsynchEventHandler getReceiver ( ) { } protected ISharedObject getSharedObject ( ID id ) { } protected ID [ ] getSharedObjectIDs ( ) { } public ISharedObjectManager getSharedObjectManager ( ) { } protected ThreadGroup getSharedObjectThreadGroup ( ) { } protected SOWrapper getSharedObjectWrapper ( ID id ) { } protected void handleAsynchIOException ( IOException except , AsynchEvent e ) { } protected void handleCreateMessage ( ContainerMessage mess ) throws IOException { } protected void handleCreateResponseMessage ( ContainerMessage mess ) throws IOException { } protected abstract void handleLeaveGroupMessage ( ContainerMessage mess ) { } protected void handleSharedObjectDisposeMessage ( ContainerMessage mess ) throws IOException { } protected boolean verifyToIDForSharedObjectMessage ( ID toID ) { } protected void handleSharedObjectMessage ( ContainerMessage mess ) throws IOException { } protected void handleUnidentifiedMessage ( ContainerMessage mess ) throws IOException { } protected abstract void handleViewChangeMessage ( ContainerMessage mess ) throws IOException { } protected boolean isClosing ( ) { } public abstract boolean isGroupManager ( ) { } public abstract void connect ( ID groupID , IConnectContext connectContext ) throws ContainerConnectException { } protected void killConnection ( IConnection conn ) { } public abstract void disconnect ( ) { } protected ISharedObject load ( SharedObjectDescription sd ) throws Exception { } protected void log ( String msg ) { } protected void logException ( String msg , Throwable e ) { } protected ThreadGroup createLoadingThreadGroup ( ) { } protected SOConfig createSharedObjectConfig ( ID id , ISharedObject obj , Map props ) { } protected SOConfig createRemoteSharedObjectConfig ( ID fromID , ReplicaSharedObjectDescription sd , ISharedObject obj ) { } protected SOContext createSharedObjectContext ( SOConfig soconfig , IQueueEnqueue queue ) { } protected SOContext createRemoteSharedObjectContext ( SOConfig soconfig , IQueueEnqueue queue ) { } protected SOWrapper createSharedObjectWrapper ( ID id , ISharedObject s , Map props ) { } protected SOWrapper createRemoteSharedObjectWrapper ( ID fromID , ReplicaSharedObjectDescription sd , ISharedObject s ) { } protected void memberLeave ( ID target , IConnection conn ) { } protected void moveFromLoadingToActive ( SOWrapper wrap ) { } protected void notifySharedObjectActivated ( ID sharedObjectID ) { } protected void notifySharedObjectDeactivated ( ID sharedObjectID ) { } protected ContainerMessage validateContainerMessage ( Object mess ) { } protected void processAsynch ( AsynchEvent e ) throws IOException { } protected abstract ID getIDForConnection ( IAsynchConnection connection ) { } protected void processDisconnect ( DisconnectEvent e ) { debug ( ( ( "processDisconnect[" + ( Thread . currentThread ( ) . getName ( ) ) ) + "]" ) ) ; try { IAsynchConnection conn = ( ( IAsynchConnection ) ( e . getConnection ( ) ) ) ; ID fromID = null ; synchronized ( getGroupMembershipLock ( ) ) { fromID = getIDForConnection ( conn ) ; memberLeave ( fromID , conn ) ; } if ( fromID != null ) <START_BUG> fireContainerEvent ( new org . eclipse . ecf . core . events . ContainerDisconnectedEvent ( getID ( ) , fromID , e . getException ( ) ) ) ; <END_BUG> } catch ( Exception except ) { logException ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>processDisconnect<seq2seq4repair_space>" , except ) ; } } protected Serializable processSynch ( SynchEvent e ) throws IOException { } protected abstract void queueContainerMessage ( ContainerMessage mess ) throws IOException { } protected void removeFromLoading ( ID id ) { } public void removeListener ( IContainerListener l ) { } protected boolean removeRemoteMember ( ID remoteMember ) { } protected ISharedObject removeSharedObject ( ID id ) { } protected void sendCreate ( ID sharedObjectID , ID toContainerID , SharedObjectDescription sd ) throws IOException { } protected void sendCreateResponse ( ID homeID , ID sharedObjectID , Throwable t , long identifier ) throws IOException { } protected void sendCreateResponseSharedObjectMessage ( ID toContainerID , ID fromSharedObject , Throwable t , long ident ) throws IOException { } protected ID [ ] sendCreateSharedObjectMessage ( ID toContainerID , SharedObjectDescription sd ) throws IOException { } protected Map getContainerPropertiesForSharedObject ( ID sharedObjectID ) { } protected void sendDispose ( ID toContainerID , ID sharedObjectID ) throws IOException { } protected void sendDisposeSharedObjectMessage ( ID toContainerID , ID fromSharedObject ) throws IOException { } protected void sendMessage ( ContainerMessage data ) throws IOException { } protected byte [ ] serializeSharedObjectMessage ( ID sharedObjectID , Object message ) throws IOException { } protected Object deserializeSharedObjectMessage ( byte [ ] bytes ) throws IOException , ClassNotFoundException { } protected void sendMessage ( ID toContainerID , ID sharedObjectID , Object message ) throws IOException { } protected void sendSharedObjectMessage ( ID toContainerID , ID fromSharedObject , Serializable data ) throws IOException { } protected void setIsClosing ( ) { } protected void setMaxGroupMembers ( int max ) { } public Namespace getConnectNamespace ( ) { } }

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