private static void parseSpecial(final Map<String, String> args,
		final CommandLineArguments result) throws ParseException
	{
		if (args.containsKey("map_type"))
		{
			String map_type = args.get("map_type");
			if ("hashmap".equals(map_type))
			{
				result.useTreeMapInsteadOfHashMap = false;
			}
			else if ("treemap".equals(map_type))
			{
				result.useTreeMapInsteadOfHashMap = true;
			}
			else
			{
				Main.logAndPrintErr("Unknown map type: " + map_type);
				result.useTreeMapInsteadOfHashMap = false;
			}
		}
		else
		{
			result.useTreeMapInsteadOfHashMap = false;
		}

		if (args.containsKey("r"))
		{
			try
			{
				String timingParameters = args.get("r");
				String[] splitParameters = timingParameters.split(":");

				result.numRuns = Integer.parseInt(splitParameters[0]);

				if (splitParameters.length > 1)
				{

					result.timingsOutputFile = splitParameters[1];

				}

				if (splitParameters.length > 2)
				{
					if ("treemap".equals(splitParameters[2]))
					{
						result.useTreeMapInsteadOfHashMap = true;
					}
					else
					{
						result.useTreeMapInsteadOfHashMap = false;
					}
				}
			}
			catch (final NumberFormatException nfex)
			{
				throw new ParseException(//
					"Error parsing repetition count r: '" + nfex.getMessage() + "'.");
			}
			catch (final IndexOutOfBoundsException iobex)
			{
				throw new ParseException(//
					"Error parsing repetition count r: '" + iobex.getMessage() + "'.");
			}
			verifyPositive(result.numRuns, "r");
		}
	}