@Override
	protected CommandExecutionResult executeArg(ActivityDiagram system, RegexResult arg) {
		final IEntity entity1 = CommandLinkActivity.getEntity(system, arg, true);
		if (entity1 == null) {
			return CommandExecutionResult.error("No if possible at this point");
		}

		final String ifCode;
		final String ifLabel;
		if (arg.get("IF2", 0) == null) {
			ifCode = arg.get("IF1", 1);
			ifLabel = arg.get("IF1", 0);
		} else {
			ifCode = null;
			ifLabel = arg.get("IF2", 0);
		}
		system.startIf(Code.of(ifCode));

		int lenght = 2;

		if (arg.get("ARROW", 0) != null) {
			final String arrow = StringUtils.manageArrowForCuca(arg.get("ARROW", 0));
			lenght = arrow.length() - 1;
		}

		final IEntity branch = system.getCurrentContext().getBranch();

		Link link = new Link(entity1, branch, new LinkType(LinkDecor.ARROW, LinkDecor.NONE),
				Display.getWithNewlines(arg.get("BRACKET", 0)), lenght, null, ifLabel, system.getLabeldistance(),
				system.getLabelangle());
		if (arg.get("ARROW", 0) != null) {
			final Direction direction = StringUtils.getArrowDirection(arg.get("ARROW", 0));
			if (direction == Direction.LEFT || direction == Direction.UP) {
				link = link.getInv();
			}
		}

		system.addLink(link);

		return CommandExecutionResult.ok();
	}