	public static ROIList<?> createNewROIList(Class<? extends IROI> clazz) {
		if (clazz == null)
			return null;
		if (PolygonalROI.class.equals(clazz))
			return new PolygonalROIList();
		else if (PolylineROI.class.equals(clazz))
			return new PolylineROIList();
		else if (PointROI.class.equals(clazz))
			return new PointROIList();
		else if (LinearROI.class.equals(clazz))
			return new LinearROIList();
		else if (RectangularROI.class.equals(clazz))
			return new RectangularROIList();
		else if (SectorROI.class.equals(clazz))
			return new SectorROIList();
		else if (CircularROI.class.equals(clazz))
			return new CircularROIList();
		else if (EllipticalFitROI.class.equals(clazz))
			return new EllipticalFitROIList();
		else if (EllipticalROI.class.equals(clazz))
			return new EllipticalROIList();
		throw new UnsupportedOperationException("No corresponding ROI list class");
	}

	public static ROIList<?> createNewROIList(Class<? extends IROI> clazz) {
		if (clazz == null)
			return null;
		if (PolygonalROI.class.isAssignableFrom(clazz))
			return new PolygonalROIList();
		else if (PolylineROI.class.isAssignableFrom(clazz))
			return new PolylineROIList();
		else if (PointROI.class.isAssignableFrom(clazz))
			return new PointROIList();
		else if (LinearROI.class.isAssignableFrom(clazz))
			return new LinearROIList();
		else if (RectangularROI.class.isAssignableFrom(clazz))
			return new RectangularROIList();
		else if (SectorROI.class.isAssignableFrom(clazz))
			return new SectorROIList();
		else if (CircularROI.class.isAssignableFrom(clazz))
			return new CircularROIList();
		else if (EllipticalFitROI.class.isAssignableFrom(clazz))
			return new EllipticalFitROIList();
		else if (EllipticalROI.class.isAssignableFrom(clazz))
			return new EllipticalROIList();
		throw new UnsupportedOperationException("No corresponding ROI list class");
	}
