Program: 65291
Project: 65291
Buggy source:
public void createPartControl(Composite parent){
  Composite child=this.initEditorLayout(parent);
  cmbExprListViewer=new ComboViewer(cmbExpList);
  JSExpListProvider provider=new JSExpListProvider();
  cmbExprListViewer.setContentProvider(provider);
  cmbExprListViewer.setLabelProvider(provider);
  cmbExprListViewer.setData(VIEWER_CATEGORY_KEY,VIEWER_CATEGORY_CONTEXT);
  JSSubFunctionListProvider subProvider=new JSSubFunctionListProvider(this);
  cmbExprListViewer.addSelectionChangedListener(subProvider);
  cmbSubFunctions.addListener(CustomChooserComposite.DROPDOWN_EVENT,new Listener(){
    public void handleEvent(    Event event){
      cmbSubFunctions.deselectAll();
      ScriptParser parser=new ScriptParser(getEditorText());
      Collection coll=parser.getAllMethodInfo();
      for (Iterator itr=coll.iterator(); itr.hasNext(); ) {
        IScriptMethodInfo mtd=(IScriptMethodInfo)itr.next();
        cmbSubFunctions.markSelection(METHOD_DISPLAY_INDENT + mtd.getName());
      }
    }
  }
);
  cmbSubFunctionsViewer=new TextComboViewer(cmbSubFunctions);
  cmbSubFunctionsViewer.setContentProvider(subProvider);
  cmbSubFunctionsViewer.setLabelProvider(subProvider);
  cmbSubFunctionsViewer.addSelectionChangedListener(subProvider);
  cmbSubFunctionsViewer.addSelectionChangedListener(propertyDefnChangeListener);
  Object model=getModel();
  if (model != null) {
    cmbExpList.setVisible(true);
    cmbSubFunctions.setVisible(true);
    setComboViewerInput(model);
  }
 else {
    setComboViewerInput(Messages.getString("String_Node_Str"));
  }
  cmbExprListViewer.addSelectionChangedListener(palettePage.getSupport());
  cmbExprListViewer.addSelectionChangedListener(propertyDefnChangeListener);
  scriptEditor.createPartControl(child);
  scriptValidator=new ScriptValidator(getViewer());
  disableEditor();
  SourceViewer viewer=getViewer();
  IDocument document=viewer == null ? null : viewer.getDocument();
  if (document != null) {
    IDocumentUndoManager undoManager=DocumentUndoManagerRegistry.getDocumentUndoManager(document);
    if (undoManager != null) {
      undoManager.addDocumentUndoListener(undoListener);
    }
    document.addDocumentListener(documentListener);
  }
}

Fixed version (ground truth):
public void createPartControl(Composite parent){
  Composite child=this.initEditorLayout(parent);
  cmbExprListViewer=new ComboViewer(cmbExpList);
  JSExpListProvider provider=new JSExpListProvider();
  cmbExprListViewer.setContentProvider(provider);
  cmbExprListViewer.setLabelProvider(provider);
  cmbExprListViewer.setData(VIEWER_CATEGORY_KEY,VIEWER_CATEGORY_CONTEXT);
  JSSubFunctionListProvider subProvider=new JSSubFunctionListProvider(this);
  cmbExprListViewer.addSelectionChangedListener(subProvider);
  cmbSubFunctions.addListener(CustomChooserComposite.DROPDOWN_EVENT,new Listener(){
    public void handleEvent(    Event event){
      cmbSubFunctions.deselectAll();
      ScriptParser parser=new ScriptParser(getEditorText());
      Collection<IScriptMethodInfo> coll=parser.getAllMethodInfo();
      for (Iterator<IScriptMethodInfo> itr=coll.iterator(); itr.hasNext(); ) {
        IScriptMethodInfo mtd=itr.next();
        cmbSubFunctions.markSelection(METHOD_DISPLAY_INDENT + mtd.getName());
      }
    }
  }
);
  cmbSubFunctionsViewer=new TextComboViewer(cmbSubFunctions);
  cmbSubFunctionsViewer.setContentProvider(subProvider);
  cmbSubFunctionsViewer.setLabelProvider(subProvider);
  cmbSubFunctionsViewer.addSelectionChangedListener(subProvider);
  cmbSubFunctionsViewer.addSelectionChangedListener(propertyDefnChangeListener);
  Object model=getModel();
  if (model != null) {
    cmbExpList.setVisible(true);
    cmbSubFunctions.setVisible(true);
    setComboViewerInput(model);
  }
 else {
    setComboViewerInput(Messages.getString("String_Node_Str"));
  }
  cmbExprListViewer.addSelectionChangedListener(palettePage.getSupport());
  cmbExprListViewer.addSelectionChangedListener(propertyDefnChangeListener);
  scriptEditor.createPartControl(child);
  scriptValidator=new ScriptValidator(getViewer());
  disableEditor();
  SourceViewer viewer=getViewer();
  IDocument document=viewer == null ? null : viewer.getDocument();
  if (document != null) {
    IDocumentUndoManager undoManager=DocumentUndoManagerRegistry.getDocumentUndoManager(document);
    if (undoManager != null) {
      undoManager.addDocumentUndoListener(undoListener);
    }
    document.addDocumentListener(documentListener);
  }
}