return new ProblemTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
return new ProblemTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL) { public void add(Object parentElement, Object[] childElements) { if (limitElements() && parentElement.equals(getInput())) { int elementLimit= getElementLimit(); Widget parentWidget= findItem(parentElement); if (parentWidget == null) return; Item[] children= getChildren(parentWidget); if (children.length >= elementLimit) return; if (children.length + childElements.length <= elementLimit) { super.add(parentElement, childElements); return; } int toAdd= elementLimit-children.length; Object[] limited= new Object[toAdd]; System.arraycopy(childElements, 0, limited, 0, limited.length); super.add(parentElement, limited); return; } else { super.add(parentElement, childElements); } }  protected Object[] getFilteredChildren(Object parentElement) { if (parentElement == null) return new Object[0]; Object[] filtered= super.getFilteredChildren(parentElement); int elementLimit = getElementLimit(); if (limitElements() && parentElement.equals(getInput()) &&  filtered.length > elementLimit) { Object[] limited= new Object[elementLimit]; System.arraycopy(filtered, 0, limited, 0, limited.length); return limited; } else return filtered; } };
	protected TreeViewer createTreeViewer(Composite parent) {		return new ProblemTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);	}