Buggy code:
public class ChatComposite extends Composite { private static final String CHAT_OUTPUT_FONT = "ChatFont" ; private final LineChatClientView view ; private Color meColor = null ; private Color otherColor = null ; private Color systemColor = null ; Action appShare = null ; ChatLayout cl = null ; Action coBrowseURL = null ; Action messageEclipseComponent = null ; Action outputClear = null ; Action outputCopy = null ; Action outputPaste = null ; Action outputSelectAll = null ; Action removeEclipseComponent = null ; Action sendComponent = null ; Action sendComponentToServer = null ; Action sendEclipseComponent = null ; Action sendFileToGroup = null ; Action sendFileToGroupAndLaunch = null ; Action sendMessage = null ; Action startProgram = null ; Action closeGroup = null ; Action sendCVSUpdateRequest = null ; Action sendShowViewRequest = null ; Action showChatWindow ; protected final String TEXT_INPUT_INIT = MessageLoader . getString ( "LineChatClientView.textinputinit" ) ; protected static final int DEFAULT_INPUT_HEIGHT = 25 ; protected static final int DEFAULT_INPUT_SEPARATOR = 5 ; Text textinput = null ; TextViewer textoutput = null ; ChatTreeViewer treeView = null ; ChatDropTarget chatDropTarget = null ; TreeDropTarget treeDropTarget = null ; ChatWindow chatWindow ; boolean typing ; ChatComposite ( LineChatClientView view , Composite parent , ChatTreeViewer tree , int options , String initText ) { } ChatComposite ( LineChatClientView view , Composite parent , ChatTreeViewer tree , int options , String initText , ChatWindow chatWindow ) { } ChatComposite ( LineChatClientView view , Composite parent , ChatTreeViewer tree , String initText ) { } public void appendText ( ChatLine text ) { } protected void clearInput ( ) { } private void contributeToActionBars ( ) { } protected void copyFileLocally ( String inputFile , String outputFile ) throws IOException { } protected void enableProxyMessage ( boolean val ) { } private void fillContextMenu ( IMenuManager manager ) { } private void fillLocalPullDown ( IMenuManager manager ) { } private void fillTreeContextMenu ( IMenuManager manager ) { } private void fillTreeContextMenuUser ( IMenuManager man , final User user ) { } protected String [ ] getArgs ( String aString ) { } protected String getCommand ( String aString ) { } private String getID ( String title , String message , String initialValue ) { } protected void handleEnter ( ) { } protected void handleKeyPressed ( KeyEvent evt ) { } protected void handleKeyReleased ( KeyEvent evt ) { } private void hookContextMenu ( ) { } protected Control getTreeControl ( ) { } protected Control getTextControl ( ) { } protected void makeActions ( ) { } protected void sendShowViewRequest ( User touser ) { } protected void sendCVSUpdateRequest ( User touser ) { } protected void closeProjectGroup ( User user ) { } protected void messageEclipseComponent ( User user ) { } protected void outputClear ( ) { } protected void outputCopy ( ) { } protected void outputPaste ( ) { } protected void outputSelectAll ( ) { } protected int getChunkPreference ( ) { } protected int getDelayPreference ( ) { } protected void readStreamAndSend ( InputStream local , String fileName , Date startDate , ID target , final boolean launch ) { try { <START_BUG> ID eclipseStageID = IDFactory . makeStringID ( ECLIPSEOBJECTNAME ) ; <END_BUG> BufferedInputStream ins = new BufferedInputStream ( local ) ; File remoteFile = new File ( new File ( fileName ) . getName ( ) ) ; FileTransferParams sp = new FileTransferParams ( remoteFile , getChunkPreference ( ) , getDelayPreference ( ) , null , true , ( - 1 ) , null ) ; final Object [ ] args = new Object [ ] { view , target , ins , sp , eclipseStageID } ; new Thread ( new Runnable ( ) { public void run ( ) { if ( launch ) { ChatComposite . this . view . makeObject ( null , EclipseFileTransferAndLaunch . class . getName ( ) , new String [ ] { FileSenderUI . class . getName ( ) , ID . class . getName ( ) , InputStream . class . getName ( ) , FileTransferParams . class . getName ( ) , ID . class . getName ( ) } , args ) ; } else { ChatComposite . this . view . makeObject ( null , EclipseFileTransfer . class . getName ( ) , new String [ ] { FileSenderUI . class . getName ( ) , ID . class . getName ( ) , InputStream . class . getName ( ) , FileTransferParams . class . getName ( ) , ID . class . getName ( ) } , args ) ; } } } , "FileRepObject<seq2seq4repair_space>creator" ) . start ( ) ; } catch ( Exception e ) { if ( ( this . view . lch ) != null ) this . view . lch . chatException ( e , "readStreamAndSend()" ) ; } } protected void removeEclipseComponent ( User user ) { } protected void sendAppShare ( ID receiver ) { } protected void sendCoBrowseToUser ( User user ) { } protected void sendEclipseComponent ( User user ) { } protected void sendFile ( String pathName , final String fileName , Date startDate , ID target , boolean launch ) { } protected void sendFileToGroup ( boolean launch ) { } protected void sendFileToUser ( User user , boolean launch ) { } protected void sendMessageToGroup ( ) { } protected void sendPrivateTextMsg ( User data ) { } protected void sendRepObjectToGroup ( User user ) { } protected void sendRepObjectToServer ( ) { } protected void sendRingMessageToUser ( User data ) { } protected void startProgram ( User ud ) { } protected void initializeDropTargets ( ) { } private Color colorFromRGBString ( String rgb ) { } private class ColorPropertyChangeListener implements Preferences . IPropertyChangeListener { public void propertyChange ( Preferences . PropertyChangeEvent event ) { } } private class FontPropertyChangeListener implements Preferences . IPropertyChangeListener { public void propertyChange ( Preferences . PropertyChangeEvent event ) { } }

Fix:
ID eclipseStageID = IDFactory . getDefault ( ) . makeStringID ( ECLIPSEOBJECTNAME ) ;