Program: 130122
Project: 130122
Buggy source:
private void createPerlSheetsViewer(Composite parent){
  sheetViewer=new ContainerCheckedTreeViewer(parent,SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE| SWT.BORDER);
  sheetViewer.setContentProvider(new ITreeContentProvider(){
    public Object[] getChildren(    Object parentElement){
      if (parentElement instanceof SheetNode) {
        return ((SheetNode)parentElement).getChildren().toArray();
      }
      return null;
    }
    public Object getParent(    Object element){
      return null;
    }
    public boolean hasChildren(    Object element){
      if (element instanceof SheetNode) {
        return ((SheetNode)element).getChildren() != null && ((SheetNode)element).getChildren().size() > 0;
      }
      return false;
    }
    public Object[] getElements(    Object inputElement){
      if (inputElement instanceof List) {
        return ((List)inputElement).toArray();
      }
      return null;
    }
    public void dispose(){
    }
    public void inputChanged(    Viewer viewer,    Object oldInput,    Object newInput){
    }
  }
);
  sheetViewer.setLabelProvider(new ILabelProvider(){
    public Image getImage(    Object element){
      return null;
    }
    public String getText(    Object element){
      if (element instanceof SheetNode) {
        return ((SheetNode)element).getLabel();
      }
      return null;
    }
    public void addListener(    ILabelProviderListener listener){
    }
    public void dispose(){
    }
    public boolean isLabelProperty(    Object element,    String property){
      return false;
    }
    public void removeListener(    ILabelProviderListener listener){
    }
  }
);
  initSheetViewer();
  sheetViewer.expandAll();
  GridData data=new GridData(GridData.FILL_BOTH);
  data.horizontalSpan=2;
  sheetViewer.getTree().setLayoutData(data);
  addTreeListener();
}

Fixed version (ground truth):
private void createPerlSheetsViewer(Composite parent){
  sheetViewer=new ContainerCheckedTreeViewer(parent,SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE| SWT.BORDER);
  sheetViewer.setContentProvider(new ITreeContentProvider(){
    @Override public Object[] getChildren(    Object parentElement){
      if (parentElement instanceof SheetNode) {
        return ((SheetNode)parentElement).getChildren().toArray();
      }
      return null;
    }
    @Override public Object getParent(    Object element){
      return null;
    }
    @Override public boolean hasChildren(    Object element){
      if (element instanceof SheetNode) {
        return ((SheetNode)element).getChildren() != null && ((SheetNode)element).getChildren().size() > 0;
      }
      return false;
    }
    @Override public Object[] getElements(    Object inputElement){
      if (inputElement instanceof List) {
        return ((List)inputElement).toArray();
      }
      return null;
    }
    @Override public void dispose(){
    }
    @Override public void inputChanged(    Viewer viewer,    Object oldInput,    Object newInput){
    }
  }
);
  sheetViewer.setLabelProvider(new ILabelProvider(){
    @Override public Image getImage(    Object element){
      return null;
    }
    @Override public String getText(    Object element){
      if (element instanceof SheetNode) {
        return ((SheetNode)element).getLabel();
      }
      return null;
    }
    @Override public void addListener(    ILabelProviderListener listener){
    }
    @Override public void dispose(){
    }
    @Override public boolean isLabelProperty(    Object element,    String property){
      return false;
    }
    @Override public void removeListener(    ILabelProviderListener listener){
    }
  }
);
  initSheetViewer();
  sheetViewer.expandAll();
  GridData data=new GridData(GridData.FILL_BOTH);
  data.horizontalSpan=2;
  sheetViewer.getTree().setLayoutData(data);
  addTreeListener();
}