Program: 148771
Project: 148771
Buggy source:
private void hookDoubleClickAction(){
  viewer.addDoubleClickListener(new IDoubleClickListener(){
    public void doubleClick(    DoubleClickEvent event){
      ISelection selection=ServerView.this.getViewer().getSelection();
      TreeObject xo=(TreeObject)((IStructuredSelection)selection).getFirstElement();
      if (xo.getType() == TreeObject._ACTION_) {
        Class<?> actionClass=(Class<?>)xo.getWsKey();
        try {
          AServerViewAction action=(AServerViewAction)actionClass.newInstance();
          action.setServerView(ServerView.this);
          action.run();
        }
 catch (        Exception ex) {
          MessageDialog.openError(viewer.getControl().getShell(),"String_Node_Str","String_Node_Str");
        }
        return;
      }
      if (xo.getType() == TreeObject._SERVER_) {
        if (xo.getServerRoot().getChildren().length == 0) {
          String universe="String_Node_Str";
          String username="String_Node_Str";
          String password="String_Node_Str";
          if (xo.getWsObject().toString().contains("String_Node_Str")) {
            universe=xo.getWsObject().toString().split("String_Node_Str")[0];
            username=xo.getWsObject().toString().split("String_Node_Str")[1].split("String_Node_Str")[0];
            password=xo.getWsObject().toString().split("String_Node_Str")[1].split("String_Node_Str")[1];
          }
 else {
            username=xo.getWsObject().toString().split("String_Node_Str")[0];
            password=xo.getWsObject().toString().split("String_Node_Str")[1];
          }
          initServerTree(xo.getWsKey().toString(),username,password,universe);
          xo.getServerRoot().getParent().removeChild(xo.getServerRoot());
        }
      }
      if (xo.getType() == TreeObject.WORKFLOW)       return;
      if (xo.getType() == TreeObject.SUBSCRIPTION_ENGINE || (xo.getType() == TreeObject.DATA_CLUSTER && xo.isXObject()) || xo.getType() == TreeObject.WORKFLOW_PROCESS)       browseViewAction.run();
 else       editXObjectAction.run();
    }
  }
);
}

Fixed version (ground truth):
private void hookDoubleClickAction(){
  viewer.addDoubleClickListener(new IDoubleClickListener(){
    public void doubleClick(    DoubleClickEvent event){
      ISelection selection=ServerView.this.getViewer().getSelection();
      TreeObject xo=(TreeObject)((IStructuredSelection)selection).getFirstElement();
      if (xo.getType() == TreeObject._ACTION_) {
        Class<?> actionClass=(Class<?>)xo.getWsKey();
        try {
          AServerViewAction action=(AServerViewAction)actionClass.newInstance();
          action.setServerView(ServerView.this);
          action.run();
        }
 catch (        Exception ex) {
          MessageDialog.openError(viewer.getControl().getShell(),"String_Node_Str","String_Node_Str");
        }
        return;
      }
      if (xo.getType() == TreeObject._SERVER_) {
        if (((TreeParent)xo).getChildrenList().size() == 1)         initServer((TreeParent)xo);
      }
      if (xo.getType() == TreeObject.WORKFLOW)       return;
      if (xo.getType() == TreeObject.SUBSCRIPTION_ENGINE || (xo.getType() == TreeObject.DATA_CLUSTER && xo.isXObject()) || xo.getType() == TreeObject.WORKFLOW_PROCESS)       browseViewAction.run();
 else       editXObjectAction.run();
    }
  }
);
}