public override RanorexStepExecutionResponse Execute(Dictionary <string, object> arguments)
        {
            RanorexStepExecutionResponse stepResponse = new RanorexStepExecutionResponse();

            try
            {
                RepoItemInfo repoItemInfo = null;

                string target        = (string)arguments.GetValueOrDefault <string, object>("target");
                string action        = (string)arguments.GetValueOrDefault <string, object>("action");
                string startLocation = (string)arguments.GetValueOrDefault <string, object>("startlocation");
                int    distance      = Convert.ToInt32(arguments.GetValueOrDefault <string, object>("distance"));
                double direction     = Convert.ToDouble(arguments.GetValueOrDefault <string, object>("direction"));
                int    duration      = Convert.ToInt32(arguments.GetValueOrDefault <string, object>("duration"));
                int    delay         = Convert.ToInt32(arguments.GetValueOrDefault <string, object>("delay"));

                int  timeout       = Convert.ToInt32(arguments.GetValueOrDefault <string, object>("timeout"));
                bool retrieveImage = (bool)arguments.GetValueOrDefault <string, object>("retrieveImage");

                if (timeout == default(int))
                {
                    timeout = 10000;
                }
                if (duration == default(int))
                {
                    duration = 0;
                }
                if (startLocation == default(string))
                {
                    startLocation = "0;0";
                }

                if (target != default(string))
                {
                    repoItemInfo = CreateItemInfo(repo, target, timeout);
                    Ranorex.Unknown adapter = CreateAdapter(repoItemInfo);

                    Report.Log(ReportLevel.Info, "Touch Gestures", "Swipe gesture with direction '" + direction + "' starting from '" + startLocation + "' with distance '" + distance + "' with swipe duration '" + duration + "'", repoItemInfo, new RecordItemIndex(Agent.EXECUTION_INDEX));
                    adapter.Swipe(startLocation, direction, distance, duration, 0);

                    if (retrieveImage)
                    {
                        stepResponse.image64 = GetImage64(adapter);
                    }
                }
                else
                {
                }

                Delay.Milliseconds(200);

                stepResponse.success = true;
            }
            catch (Exception e)
            {
                stepResponse.message = "Ranorex Exception: " + e.Message;
                stepResponse.success = false;
            }
            return(stepResponse);
        }