public static Decision GetNationalityDecision(Dictionary <int, IDecision> branches = null)
        {
            // default param
            branches = branches ?? new Dictionary <int, IDecision> {
            };

            // Code

            // question and decision
            Action <IDecision, IDecision> question = (d, a) =>
            {
                var decision = d as NationalityDecision;
                var answer   = a as NationalityDecision;

                if (decision != null)
                {
                    // ask question
                    //var typ = decision.GetType();
                    //var typnm = typ.ToString();

                    var branchChoice = 0;

                    if (answer != null)
                    {
                        // automapper
                        decision.NationalityEnum = answer.NationalityEnum;
                        decision.Result          = answer.Result;
                    }
                    else
                    {
                        Console.WriteLine("{0}", decision.Question);
                        var ans = Console.ReadLine() ?? string.Empty;
                        branchChoice = Convert.ToInt32(ans);

                        // assign/calculate properties of the decision
                        decision.NationalityEnum = (NationalityEnum)branchChoice;
                        //decision.Amount = 0f;

                        // assign branch choice given users answers
                        decision.Result = branchChoice;
                    }
                }
            };

            var retd = new NationalityDecision
            {
                Question = string.Format("[/1] {0} ?", Enum <NationalityEnum> .EnumsStringSummary()),
                Mutator  = question,
                Branches = branches
            };

            // Return
            return(retd);
        }
        public static Decision GetNationalityDecision(Dictionary<int, IDecision> branches = null)
        {
            // default param
            branches = branches ?? new Dictionary<int, IDecision> { };

            // Code

            // question and decision
            Action<IDecision, IDecision> question = (d, a) =>
            {
                var decision = d as NationalityDecision;
                var answer = a as NationalityDecision;

                if (decision != null)
                {
                    // ask question
                    //var typ = decision.GetType();
                    //var typnm = typ.ToString();

                    var branchChoice = 0;

                    if (answer != null)
                    {
                        // automapper
                        decision.NationalityEnum = answer.NationalityEnum;
                        decision.Result = answer.Result;
                    }
                    else
                    {
                        Console.WriteLine("{0}", decision.Question);
                        var ans = Console.ReadLine() ?? string.Empty;
                        branchChoice = Convert.ToInt32(ans);

                        // assign/calculate properties of the decision
                        decision.NationalityEnum = (NationalityEnum)branchChoice;
                        //decision.Amount = 0f;

                        // assign branch choice given users answers
                        decision.Result = branchChoice;
                    }
                }
            };

            var retd = new NationalityDecision
            {
                Question = string.Format("[/1] {0} ?", Enum<NationalityEnum>.EnumsStringSummary()),
                Mutator = question,
                Branches = branches
            };

            // Return
            return retd;
        }