static public MotionResult TextEntry(
			this IHostToScript Sanderling,
			string Text) =>
			Sanderling?.MotionExecute(new Motor.MotionParam()
			{
				TextEntry = Text,
			});
		static public MotionResult KeyboardPressCombined(
			this IHostToScript Sanderling,
			IEnumerable<VirtualKeyCode> SetKey) =>
			Sanderling?.MotionExecute(new Motor.MotionParam()
			{
				KeyDown = SetKey?.ToArray(),
				KeyUp = SetKey?.Reverse()?.ToArray(),
			});
		static public MotionResult MouseMove(
			this IHostToScript Host,
			IUIElement Destination,
			MouseButtonIdEnum[] MouseButton = null) =>
			Host?.MotionExecute(new Motor.MotionParam()
			{
				MouseListWaypoint = new[] { new Motor.MotionParamMouseRegion() { UIElement = Destination }, },
				MouseButton = MouseButton,
			});
		static public MotionResult MouseDragAndDrop(
			this IHostToScript Host,
			IUIElement ElementToDrag,
			IUIElement Destination,
			MouseButtonIdEnum MouseButton) =>
			Host?.MotionExecute(new Motor.MotionParam()
			{
				MouseListWaypoint = new[] { ElementToDrag, Destination }.Select(UIElement => new Motor.MotionParamMouseRegion() { UIElement = UIElement })?.ToArray(),
				MouseButton = new[] { MouseButton },
			});
		static public MotionResult WindowToForeground(
			this IHostToScript Sanderling) =>
			Sanderling?.MotionExecute(new Motor.MotionParam()
			{
				WindowToForeground = true,
			});
		static public MotionResult KeyUp(
			this IHostToScript sanderling,
			VirtualKeyCode key) =>
			sanderling?.MotionExecute(key.KeyUp());
		static public MotionResult TextEntry(
			this IHostToScript sanderling,
			string text) =>
			sanderling?.MotionExecute(text?.TextEntry());
		static public MotionResult KeyUp(
			this IHostToScript sanderling,
			IEnumerable<VirtualKeyCode> listKey) =>
			sanderling?.MotionExecute(listKey?.KeyUp());
		static public MotionResult KeyboardPressCombined(
			this IHostToScript sanderling,
			IEnumerable<VirtualKeyCode> setKey) =>
			sanderling?.MotionExecute(setKey?.KeyboardPressCombined());
		static public MotionResult MouseDragAndDrop(
			this IHostToScript host,
			IUIElement elementToDrag,
			IUIElement destination,
			MouseButtonIdEnum mouseButton) =>
			host?.MotionExecute(elementToDrag?.MouseDragAndDropOn(destination, mouseButton));
		static public MotionResult MouseClick(
			this IHostToScript host,
			IUIElement destination,
			MouseButtonIdEnum mouseButton) =>
			host?.MotionExecute(destination.MouseClick(mouseButton));
		static public MotionResult MouseMove(
			this IHostToScript host,
			IUIElement destination,
			MouseButtonIdEnum[] mouseButton = null) =>
			host?.MotionExecute(destination.MouseMove(mouseButton));