@Override
	final protected CommandExecutionResult executeArg(List<String> arg) {
		final String arrow = StringUtils.manageArrowForSequence(arg.get(posArrow));
		final Participant p = getSystem().getOrCreateParticipant(
				StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg.get(posParticipant)));

		final boolean sync = arrow.contains(">>") || arrow.contains("<<") || arrow.contains("//")
				|| arrow.contains("\\\\");
		final boolean dotted = arrow.contains("--");

		final List<String> labels;
		if (arg.get(2) == null) {
			labels = Arrays.asList("");
		} else {
			labels = StringUtils.getWithNewlines(arg.get(2));
		}

		ArrowConfiguration config = ArrowConfiguration.withDirection(ArrowDirection.LEFT_TO_RIGHT_NORMAL);
		if (dotted) {
			config = config.withDotted();
		}
		if (sync) {
			config = config.withHead(ArrowHead.ASYNC);
		}
		config = config.withPart(getArrowPart(arrow));

		final String error = getSystem().addMessage(
				new MessageExo(p, getMessageExoType(arrow), labels, config, getSystem().getNextMessageNumber()));
		if (error != null) {
			return CommandExecutionResult.error(error);
		}
		return CommandExecutionResult.ok();
	}