private static ActivityLocationReferenceEnvironment processArguments(
			Activity owner,
			List<RuntimeArgument> arguments,
			ActivityLocationReferenceEnvironment environment,
			AtomicInteger environmentId,
			Stack<Activity> stack) {
		if (arguments.size() == 0)
			return environment;
		if (environment == null)
			environment = new ActivityLocationReferenceEnvironment(owner.getParentEnvironment());
		for (RuntimeArgument argument : arguments) {
			argument.initializeRelationship(owner);
			argument.setId(environmentId.getAndIncrement());
			environment.declare(argument, owner);

			if (argument.getBoundArgument() != null && argument.getBoundArgument().getExpression() != null)
				stack.add(argument.getBoundArgument().getExpression());
		}
		return environment;
	}