Program: 81187
Project: 81187
Buggy source:
@Override public void createPartControl(Composite parent){
  SashForm sash=new SashForm(parent,SWT.HORIZONTAL);
  sash.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  Composite cloudComp=new Composite(sash,SWT.NONE);
  cloudComp.setLayout(new GridLayout());
  cloudComp.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  TagCloud cloud=new TagCloud(cloudComp,SWT.HORIZONTAL | SWT.VERTICAL);
  cloud.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  viewer=new TagCloudViewer(cloud);
  createSideTab(sash);
  sash.setWeights(new int[]{72,28});
  layouter=new DefaultLayouter(20,10);
  viewer.setLayouter(layouter);
  labelProvider=new TypeLabelProvider();
  viewer.setLabelProvider(labelProvider);
  viewer.setContentProvider(new IStructuredContentProvider(){
    @Override public void inputChanged(    Viewer v,    Object oldInput,    Object newInput){
      List<?> list=(List<?>)newInput;
      if (list == null || list.size() == 0)       return;
      labelProvider.setMaxOccurrences(((Type)list.get(0)).getOccurrences());
      int minIndex=Math.min(list.size() - 1,viewer.getMaxWords());
      labelProvider.setMinOccurrences(((Type)list.get(minIndex)).getOccurrences());
    }
    @Override public void dispose(){
    }
    @Override public Object[] getElements(    Object inputElement){
      return ((List<?>)inputElement).toArray();
    }
  }
);
  cloud.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  viewer.getCloud().addControlListener(new ControlListener(){
    @Override public void controlResized(    ControlEvent e){
      viewer.getCloud().zoomFit();
    }
    @Override public void controlMoved(    ControlEvent e){
    }
  }
);
  ArrayList<Type> types=new ArrayList<Type>();
  types.add(new Type("String_Node_Str",220));
  types.add(new Type("String_Node_Str",150));
  types.add(new Type("String_Node_Str",100));
  types.add(new Type("String_Node_Str",150));
  int size=55;
  for (int i=0; i < 50; i++) {
    types.add(new Type("String_Node_Str",size));
    size--;
  }
  viewer.getCloud().setMaxFontSize(100);
  viewer.getCloud().setMinFontSize(15);
  labelProvider.setColors(options.getColors());
  labelProvider.setFonts(options.getFonts());
  viewer.setInput(types);
}

Fixed version (ground truth):
@Override public void createPartControl(Composite parent){
  SashForm sash=new SashForm(parent,SWT.HORIZONTAL);
  sash.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  Composite cloudComp=new Composite(sash,SWT.NONE);
  cloudComp.setLayout(new GridLayout());
  cloudComp.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  TagCloud cloud=new TagCloud(cloudComp,SWT.HORIZONTAL | SWT.VERTICAL);
  cloud.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  viewer=new TagCloudViewer(cloud);
  layouter=new DefaultLayouter(20,10);
  viewer.setLayouter(layouter);
  labelProvider=new TypeLabelProvider();
  viewer.setLabelProvider(labelProvider);
  viewer.setContentProvider(new IStructuredContentProvider(){
    @Override public void inputChanged(    Viewer v,    Object oldInput,    Object newInput){
      List<?> list=(List<?>)newInput;
      if (list == null || list.size() == 0)       return;
      labelProvider.setMaxOccurrences(((Type)list.get(0)).getOccurrences());
      int minIndex=Math.min(list.size() - 1,viewer.getMaxWords());
      labelProvider.setMinOccurrences(((Type)list.get(minIndex)).getOccurrences());
    }
    @Override public void dispose(){
    }
    @Override public Object[] getElements(    Object inputElement){
      return ((List<?>)inputElement).toArray();
    }
  }
);
  createSideTab(sash);
  cloud.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true));
  viewer.getCloud().addControlListener(new ControlListener(){
    @Override public void controlResized(    ControlEvent e){
      viewer.getCloud().zoomFit();
    }
    @Override public void controlMoved(    ControlEvent e){
    }
  }
);
  ArrayList<Type> types=new ArrayList<Type>();
  types.add(new Type("String_Node_Str",220));
  types.add(new Type("String_Node_Str",150));
  types.add(new Type("String_Node_Str",100));
  types.add(new Type("String_Node_Str",150));
  int size=55;
  for (int i=0; i < 50; i++) {
    types.add(new Type("String_Node_Str",size));
    size--;
  }
  viewer.getCloud().setMaxFontSize(100);
  viewer.getCloud().setMinFontSize(15);
  labelProvider.setColors(options.getColors());
  labelProvider.setFonts(options.getFonts());
  sash.setWeights(new int[]{72,28});
  viewer.setInput(types);
}