Program: 69361
Project: 69361
Buggy source:
private void createExpressionButton(Composite composite,final Text property,String propName){
  ExpressionButton exprButton=UIUtil.createExpressionButton(composite,SWT.PUSH);
  if (handle == null) {
    handle=DesignElementFactory.getInstance(getModuleHandle()).newOdaDataSet(null);
  }
  IExpressionHelper helper=new IExpressionHelper(){
    public String getExpression(){
      if (property != null)       return property.getText();
 else       return "String_Node_Str";
    }
    public void setExpression(    String expression){
      if (property != null)       property.setText(expression);
    }
    public void notifyExpressionChangeEvent(    String oldExpression,    String newExpression){
    }
    public IExpressionProvider getExpressionProvider(){
      return new ExpressionProvider(handle);
    }
    public String getExpressionType(){
      return (String)property.getData(DataUIConstants.EXPR_TYPE);
    }
    public void setExpressionType(    String exprType){
      property.setData(DataUIConstants.EXPR_TYPE,exprType);
    }
  }
;
  helper.setExpressionType(UIUtil.getDefaultScriptType());
  exprButton.setExpressionHelper(helper);
  Expression expr=handle.getPropertyBindingExpression(propName);
  property.setData(DataUIConstants.EXPR_BUTTON,exprButton);
  property.setText((expr == null || expr.getStringExpression() == null) ? "String_Node_Str" : expr.getStringExpression());
  if (expr != null)   property.setData(DataUIConstants.EXPR_TYPE,expr.getType());
  exprButton=(ExpressionButton)property.getData(DataUIConstants.EXPR_BUTTON);
  if (exprButton != null)   exprButton.refresh();
}

Fixed version (ground truth):
private void createExpressionButton(Composite composite,final Text property,String propName){
  ExpressionButton exprButton=UIUtil.createExpressionButton(composite,SWT.PUSH);
  if (handle == null) {
    handle=DesignElementFactory.getInstance(getModuleHandle()).newOdaDataSet(null);
  }
  IExpressionHelper helper=new IExpressionHelper(){
    public String getExpression(){
      if (property != null)       return property.getText();
 else       return "String_Node_Str";
    }
    public void setExpression(    String expression){
      if (property != null)       property.setText(expression);
    }
    public void notifyExpressionChangeEvent(    String oldExpression,    String newExpression){
    }
    public IExpressionProvider getExpressionProvider(){
      return new ExpressionProvider(handle);
    }
    public String getExpressionType(){
      return (String)property.getData(DataUIConstants.EXPR_TYPE);
    }
    public void setExpressionType(    String exprType){
      property.setData(DataUIConstants.EXPR_TYPE,exprType);
    }
  }
;
  helper.setExpressionType(UIUtil.getDefaultScriptType());
  exprButton.setExpressionHelper(helper);
  if (PASSWORD.equals(propName)) {
    exprButton.setExpressionButtonProvider(new ExprButtonProvider(true,property));
  }
  Expression expr=handle.getPropertyBindingExpression(propName);
  property.setData(DataUIConstants.EXPR_BUTTON,exprButton);
  property.setText((expr == null || expr.getStringExpression() == null) ? "String_Node_Str" : expr.getStringExpression());
  if (expr != null)   property.setData(DataUIConstants.EXPR_TYPE,expr.getType());
  exprButton=(ExpressionButton)property.getData(DataUIConstants.EXPR_BUTTON);
  if (exprButton != null)   exprButton.refresh();
}