private final double getMaxXInternal(StringBounder stringBounder) {
		final InGroupable max = getMax(stringBounder);
		if (max == null) {
			return MARGIN10 + MARGIN5 + minWidth;
		}
		double m = max.getMaxX(stringBounder);
		if (max instanceof MessageExoArrow
				&& (((MessageExoArrow) max).getType() == MessageExoType.FROM_RIGHT || ((MessageExoArrow) max).getType() == MessageExoType.TO_RIGHT)) {
			m -= 3;
		} else if (max instanceof InGroupableList) {
			m += MARGIN10;
		} else {
			m += MARGIN5;
		}
		return m;
	}