@Override
	final protected CommandExecutionResult executeArg(Map<String, RegexPartialMatch> arg2) {
		final String code = arg2.get("CODE").get(0);
		if (getSystem().participants().containsKey(code)) {
			getSystem().putParticipantInLast(code);
			return CommandExecutionResult.ok();
		}

		List<String> strings = null;
		if (arg2.get("FULL") != null && arg2.get("FULL").get(0) != null) {
			strings = StringUtils.getWithNewlines(arg2.get("FULL").get(0));
		}

		final String typeString = arg2.get("TYPE").get(0).toUpperCase();
		final ParticipantType type;
		final boolean create;
		if (typeString.equals("CREATE")) {
			type = ParticipantType.PARTICIPANT;
			create = true;
		} else {
			type = ParticipantType.valueOf(typeString);
			create = false;
		}
		final Participant participant = getSystem().createNewParticipant(type, code, strings);

		final String stereotype = arg2.get("STEREO").get(0);

		if (stereotype != null) {
			participant.setStereotype(new Stereotype(stereotype,
					getSystem().getSkinParam().getCircledCharacterRadius(), getSystem().getSkinParam().getFont(
							FontParam.CIRCLED_CHARACTER, null)));
		}
		participant.setSpecificBackcolor(HtmlColor.getColorIfValid(arg2.get("COLOR").get(0)));

		if (create) {
			final String error = getSystem().activate(participant, LifeEventType.CREATE, null);
			if (error != null) {
				return CommandExecutionResult.error(error);
			}

		}

		return CommandExecutionResult.ok();
	}