public CasedFIO Get(string surname, string firstName, Gender gender)
        {
            CasedFIO result = new CasedFIO();

            Capitalize cap = new Capitalize();

            surname   = cap.Capitalizer(surname);
            firstName = cap.Capitalizer(firstName);
            var sc = mixedCasers.SurnameCaser;
            var fc = mixedCasers.FirstNameCaser;

            result.Nominative.Surname   = sc.GetCase(surname, Gender.Undefined, Case.Nominative);
            result.Nominative.FirstName = fc.GetCase(firstName, Gender.Undefined, Case.Nominative);



            result.Ablative.Surname      = sc.GetCase(surname, gender, Case.Ablative);
            result.Dative.Surname        = sc.GetCase(surname, gender, Case.Dative);
            result.Genitive.Surname      = sc.GetCase(surname, gender, Case.Genitive);
            result.Prepositional.Surname = sc.GetCase(surname, gender, Case.Prepositional);



            result.Ablative.FirstName      = fc.GetCase(firstName, gender, Case.Ablative);
            result.Dative.FirstName        = fc.GetCase(firstName, gender, Case.Dative);
            result.Genitive.FirstName      = fc.GetCase(firstName, gender, Case.Genitive);
            result.Prepositional.FirstName = fc.GetCase(firstName, gender, Case.Prepositional);

            Action <CasedSimpleFIO> fullcalcer    = (fio) => fio.Full = fio.Surname + " " + fio.FirstName;
            Action <CasedSimpleFIO> abbrcalcer    = (fio) => fio.Abbr = fio.Surname + " " + fio.FirstName[0] + ".";
            Action <CasedSimpleFIO> iocalcer      = (fio) => fio.IO = fio.FirstName;
            Action <CasedSimpleFIO> complexcalcer = fio =>
            {
                fullcalcer(fio);
                abbrcalcer(fio);
                iocalcer(fio);
            };

            complexcalcer(result.Genitive);
            complexcalcer(result.Ablative);
            complexcalcer(result.Dative);
            complexcalcer(result.Prepositional);
            complexcalcer(result.Nominative);
            return(result);
        }
 public virtual string Capitalizer(string str)
 {
     return(c.Capitalizer(str));
 }