/// <summary>
        /// Locates actions for the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>Discovered actions.</returns>
        public IEnumerable <IAction> Locate(ActionLocationContext context)
        {
            var actions      = new List <IAction>();
            var methodGroups = SelectMethods(context.TargetType);

            foreach (var methodGroup in methodGroups)
            {
                var methodList = methodGroup.ToList();

                if (methodList.Count == 1)
                {
                    actions.Add(CreateAction(context.TargetType, context.TargetFilters, methodList[0]));
                }
                else
                {
                    var overloadedAction = new OverloadedAction(methodGroup.Key);

                    foreach (var methodInfo in methodList)
                    {
                        overloadedAction.AddOverload(CreateAction(context.TargetType, context.TargetFilters, methodInfo));
                    }

                    actions.Add(overloadedAction);
                }
            }

            return(actions);
        }
        /// <summary>
        /// Locates actions for the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns>Discovered actions.</returns>
        public IEnumerable<IAction> Locate(ActionLocationContext context)
        {
            var actions = new List<IAction>();
            var methodGroups = SelectMethods(context.TargetType);

            foreach(var methodGroup in methodGroups)
            {
                var methodList = methodGroup.ToList();

                if(methodList.Count == 1)
                    actions.Add(CreateAction(context.TargetType, context.TargetFilters, methodList[0]));
                else
                {
                    var overloadedAction = new OverloadedAction(methodGroup.Key);

                    foreach(var methodInfo in methodList)
                    {
                        overloadedAction.AddOverload(CreateAction(context.TargetType, context.TargetFilters, methodInfo));
                    }

                    actions.Add(overloadedAction);
                }
            }

            return actions;
        }