rem: teamArgs = create_team_arg(path, argCount, args, envCount, env);
add: teamArgs = create_team_arg(argCount, args, envCount, env, true);
context: exec_team(const char *path, int32 argCount, char **args, int32 envCount, char **env){	struct team *team = thread_get_current_thread()->team;	struct team_arg *teamArgs;	status_t status;	TRACE(("exec_team(path = \"%s\", argc = %ld, envCount = %ld)\n", path, argCount, envCount));	// switching the kernel at run time is probably not a good idea :)	if (team == team_get_kernel_team())		return B_NOT_ALLOWED;	// we currently need to be single threaded here	// ToDo: maybe we should just kill all other threads and	//	make the current thread the team's main thread?	if (team->main_thread != thread_get_current_thread()		|| team->main_thread != team->thread_list		|| team->main_thread->team_next != NULL)		return B_NOT_ALLOWED;	// ToDo: maybe we should make sure upfront that the target path is an app?	teamArgs = create_team_arg(path, argCount, args, envCount, env);	if (teamArgs == NULL)		return B_NO_MEMORY;	// ToDo: remove team resources if there are any left	// alarm, signals	// thread_atkernel_exit() might not be called at all	vm_delete_areas(team->aspace);	delete_owned_ports(team->id);	sem_delete_owned_sems(team->id);	remove_images(team);	vfs_exec_io_context(team->io_context);	status = team_create_thread_start(teamArgs);		// this one usually doesn't return...	// sorry, we have to kill us, there is no way out anymore (without any areas left and all that)	exit_thread(status);		// we'll never make it here	return B_ERROR;}