Buggy code:
protected int getConnectTimeout ( ) { } public Roster getRoster ( ) throws IOException { } public Namespace getConnectNamespace ( ) { } protected void deliverEvent ( Event evt ) { } protected void handleXMPPMessage ( Packet aPacket ) throws IOException { } protected boolean handleAsExtension ( Packet packet ) { } public void connect ( ID remote , IConnectContext joinContext ) throws ContainerConnectException { } public void disconnect ( ) { } protected SOContext createSharedObjectContext ( SOConfig soconfig , IQueueEnqueue queue ) { } protected void processAsynch ( AsynchEvent e ) { } public void sendMessage ( ID target , String message ) throws IOException { } protected ECFConnection getConnectionOrThrow ( ) throws IOException { } protected Presence createPresenceFromIPresence ( IPresence presence ) { } protected void sendPresenceUpdate ( ID target , Presence presence ) throws IOException { } protected void sendRosterAdd ( String user , String name , String [ ] groups ) throws IOException { } protected void sendRosterRemove ( String user ) throws IOException { } protected IRosterManager getRosterManager ( ) { } protected ECFConnection getECFConnection ( ) { } public Object getAdapter ( Class clazz ) { if ( clazz . equals ( IPresenceContainerAdapter . class ) ) { return new IPresenceContainerAdapter ( ) { public IRosterManager getRosterManager ( ) { return delegate . getRosterManager ( ) ; } public Object getAdapter ( Class clazz ) { return null ; } public void addPresenceListener ( IPresenceListener listener ) { delegate . addPresenceListener ( listener ) ; } public void addMessageListener ( IMessageListener listener ) { delegate . addMessageListener ( listener ) ; } public IMessageSender getMessageSender ( ) { return new IMessageSender ( ) { public void sendMessage ( ID toID , String subject , String message ) { try { XMPPClientSOContainer . this . sendMessage ( toID , message ) ; } catch ( IOException e ) { dumpStack ( ( ( ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>sendmessage<seq2seq4repair_space>to<seq2seq4repair_space>" + toID ) + "<seq2seq4repair_space>with<seq2seq4repair_space>message<seq2seq4repair_space>" ) + message ) , e ) ; } } } ; } public IPresenceSender getPresenceSender ( ) { return new IPresenceSender ( ) { public void sendPresenceUpdate ( ID toID , IPresence presence ) { try { Presence newPresence = createPresenceFromIPresence ( presence ) ; XMPPClientSOContainer . this . sendPresenceUpdate ( toID , newPresence ) ; } catch ( IOException e ) { dumpStack ( ( ( ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>sendPresenceUpdate<seq2seq4repair_space>to<seq2seq4repair_space>" + toID ) + "<seq2seq4repair_space>with<seq2seq4repair_space>presence<seq2seq4repair_space>" ) + presence ) , e ) ; } } public void sendRosterAdd ( String user , String name , String [ ] groups ) { try { XMPPClientSOContainer . this . sendRosterAdd ( user , name , groups ) ; } catch ( IOException e ) { dumpStack ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>sendRosterAdd" , e ) ; } } public void sendRosterRemove ( ID userID ) { try { if ( userID == null ) return ; XMPPClientSOContainer . this . sendRosterRemove ( userID . getName ( ) ) ; } catch ( IOException e ) { dumpStack ( "Exception<seq2seq4repair_space>in<seq2seq4repair_space>sendRosterAdd" , e ) ; } } } ; } public IAccountManager getAccountManager ( ) { return new IAccountManager ( ) { public boolean changePassword ( String newpassword ) throws ECFException { return delegate . changePassword ( newpassword ) ; } public boolean createAccount ( String username , String password , Map attributes ) throws ECFException { return delegate . createAccount ( username , password , attributes ) ; } public boolean deleteAccount ( ) throws ECFException { return delegate . deleteAccount ( ) ; } public String getAccountCreationInstructions ( ) throws ECFException { return delegate . getAccountCreationInstructions ( ) ; } public String [ ] getAccountAttributeNames ( ) throws ECFException { return delegate . getAccountAttributeNames ( ) ; } public Object getAccountAttribute ( String name ) throws ECFException { return delegate . getAccountAttribute ( name ) ; } public boolean isAccountCreationSupported ( ) { return delegate . isAccountCreationSupported ( ) ; } } ; } public void addRosterSubscriptionListener ( IRosterSubscriptionListener listener ) { delegate . addSubscribeListener ( listener ) ; } public IChatRoomManager getChatRoomManager ( ) { return new IChatRoomManager ( ) { public IChatRoomManager [ ] getChildren ( ) { return new IChatRoomManager [ 0 ] ; } public ID [ ] getChatRooms ( ) { return XMPPClientSOContainer . this . getChatRooms ( ) ; } public IChatRoomInfo getChatRoomInfo ( String roomname ) { return XMPPClientSOContainer . this . getChatRoomInfo ( roomname ) ; } <START_BUG> public IChatRoomInfo [ ] getChatRoomsInfo ( ) { <END_BUG> ID [ ] chatRooms = getChatRooms ( ) ; if ( chatRooms == null ) return null ; IChatRoomInfo [ ] res = new IChatRoomInfo [ chatRooms . length ] ; int count = 0 ; for ( int i = 0 ; i < ( chatRooms . length ) ; i ++ ) { IChatRoomInfo infoResult = XMPPClientSOContainer . this . getChatRoomInfo ( chatRooms [ i ] ) ; if ( infoResult != null ) { res [ ( count ++ ) ] = infoResult ; } } IChatRoomInfo [ ] results = new IChatRoomInfo [ count ] ; for ( int i = 0 ; i < count ; i ++ ) { results [ i ] = res [ i ] ; } return results ; } public Object getAdapter ( Class adapter ) { return null ; } public void addInvitationListener ( IChatRoomInvitationListener listener ) { delegate . addInvitationListener ( listener ) ; } public void removeInvitationListener ( IChatRoomInvitationListener listener ) { delegate . removeInvitationListener ( listener ) ; } public IChatRoomManager getParent ( ) { return null ; } } ; } public void removeMessageListener ( IMessageListener listener ) { delegate . removeMessageListener ( listener ) ; } public void removePresenceListener ( IPresenceListener listener ) { delegate . removePresenceListener ( listener ) ; } public void removeRosterSubscriptionListener ( IRosterSubscriptionListener listener ) { delegate . removeSubscribeListener ( listener ) ; } public IChatManager getChatManager ( ) { return delegate . getChatManager ( ) ; } } ; }

Fix:
public IChatRoomInfo [ ] getChatRoomInfos ( ) {