/// <summary>
        /// Takes in the input arguments, and adds Dishes to an Order until done or error.
        /// </summary>
        /// <param name="orderStrings">input arguments.  first argument is the menu name, all other arguments are dish numbers.</param>
        /// <returns>A new Order object, with tabulated dish counts for each dish ordered, and error information.</returns>
        public virtual Order FormOrder(string[] orderStrings)
        {
            Order currentOrder = new Order();
            var currentMenu = _menus.FirstOrDefault(menu => string.Equals(orderStrings[0], menu.Name, StringComparison.CurrentCultureIgnoreCase));
            if (currentMenu == null)
            {
                currentOrder.ErrorOccurred = true;
                return currentOrder;
            }
            for (int i = 1; ((i < orderStrings.Length) && (!currentOrder.ErrorOccurred)); i++)
            {
                var dishNumber = 0;
                var trimmedArgument = orderStrings[i].Trim();

                if (Int32.TryParse(trimmedArgument, out dishNumber))
                {
                    if (!currentMenu.MenuItems.ContainsKey(dishNumber))
                    {
                        currentOrder.ErrorOccurred = true;
                        break;
                    }

                    var currentDish = currentMenu.MenuItems[dishNumber];
                    if(currentDish == null || currentDish.Name == null)
                    {
                        currentOrder.ErrorOccurred = true;
                        break;
                    }
                    currentOrder.OrderDish(dishNumber, currentDish);
                }
                else //couldn't parse integer from the orderString
                {
                    currentOrder.ErrorOccurred = true;
                }
            }

            return currentOrder;
        }