public void add(Object[] elements) { if (limitElements()) { int elementLimit= getElementLimit(); int currentCount= getTable().getItemCount(); if (currentCount >= elementLimit) return; if (currentCount + elements.length <= elementLimit) { super.add(elements); return; } int toAdd= elementLimit-currentCount; Object[] limited= new Object[toAdd]; System.arraycopy(elements, 0, limited, 0, limited.length); super.add(limited); return; } else { super.add(elements); } }  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 TableViewer createTableViewer(Composite parent) {		return new ProblemTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL) {			protected void handleLabelProviderChanged(LabelProviderChangedEvent event) {				getTable().setRedraw(false);				try {					super.handleLabelProviderChanged(event);				} finally {					getTable().setRedraw(true);				}			}		};	}