Program: 118544
Project: 118544
Buggy source:
@Override public Control createControl(Composite subComposite,final IElementParameter param,int numInRow,int nbInRow,int top,Control lastControl){
  FormData data=new FormData();
  data.left=new FormAttachment(0,0);
  data.top=new FormAttachment(0,0);
  data.right=new FormAttachment(100,0);
  data.bottom=new FormAttachment(100,0);
  Composite parentComp=new Composite(subComposite,SWT.NONE);
  parentComp.setLayoutData(data);
  parentComp.setLayout(new GridLayout());
  ElementsSelectionComposite<NamedThing> selectionComposite=new ElementsSelectionComposite<NamedThing>(parentComp){
    @Override protected IBaseLabelProvider getLabelProvider(){
      return new LabelProvider(){
        @Override public String getText(        Object obj){
          NamedThing nal=(NamedThing)obj;
          return nal.getDisplayName();
        }
        @Override public Image getImage(        Object obj){
          return null;
        }
      }
;
    }
    @Override protected void doSelectionChanged(){
      param.setValue(getSelectedElements());
    }
  }
;
  selectionComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
  if (param instanceof GenericElementParameter) {
    List<NamedThing> possibleValues=(List<NamedThing>)((GenericElementParameter)param).getPossibleValues();
    selectionComposite.setViewerData(possibleValues);
  }
  return parentComp;
}

Fixed version (ground truth):
@Override public Control createControl(Composite subComposite,final IElementParameter param,int numInRow,int nbInRow,int top,Control lastControl){
  FormData data=new FormData();
  data.left=new FormAttachment(0,0);
  data.top=new FormAttachment(0,0);
  data.right=new FormAttachment(100,0);
  data.bottom=new FormAttachment(100,0);
  Composite parentComp=new Composite(subComposite,SWT.NONE);
  parentComp.setLayoutData(data);
  parentComp.setLayout(new GridLayout());
  ElementsSelectionComposite<NamedThing> selectionComposite=new ElementsSelectionComposite<NamedThing>(parentComp){
    @Override protected IBaseLabelProvider getLabelProvider(){
      return new LabelProvider(){
        @Override public String getText(        Object obj){
          NamedThing nal=(NamedThing)obj;
          return nal.getDisplayName();
        }
        @Override public Image getImage(        Object obj){
          return null;
        }
      }
;
    }
    @Override protected void doSelectionChanged(){
      param.setValue(getSelectedElements());
    }
    @Override protected List<String> getSelectedElementLabels(){
      Object value=param.getValue();
      if (value instanceof List) {
        return (List)value;
      }
      return null;
    }
    @Override protected List<NamedThing> getInitSelectedElements(    List<String> selectedElementLabels){
      List<NamedThing> selectedElements=new ArrayList<>();
      List<NamedThing> viewerDatas=getViewerData();
      for (      NamedThing viewerData : viewerDatas) {
        if (selectedElementLabels.contains(viewerData.getName())) {
          selectedElements.add(viewerData);
        }
      }
      return selectedElements;
    }
  }
;
  selectionComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
  if (param instanceof GenericElementParameter) {
    List<NamedThing> possibleValues=(List<NamedThing>)((GenericElementParameter)param).getPossibleValues();
    selectionComposite.setViewerData(possibleValues);
  }
  selectionComposite.setCheckedState();
  return parentComp;
}