private bool SetCouple(ParentRelationshipSearch next, PersonWithMetadata child, Func <ParentRelationshipSearch, PersonWithMetadata, Randomizer, Couple> getNewCouple, Randomizer randy)
        {
            var couple = GetFromCache(next.KeyParents()) ?? getNewCouple(next, child, randy);

            if (couple == null)
            {
                return(false);
            }

            SetNins(couple.FatherNin, couple.MotherNin, child);

            if (randy.Hit(NameModel.PHasSamesirnameAsParents(child)))
            {
                var takeFathers = couple.FatherSn != null && randy.Hit(50);
                child.Person.Sn = takeFathers ? couple.FatherSn : (couple.MotherSn ?? child.Person.Sn);
            }



            return(true);
        }
        public string NextSirname(bool doublename, Randomizer randyRandomizer)
        {
            var name = GetName(randyRandomizer, _sirIndexes, _sirname);

            if (!doublename)
            {
                return(name);
            }

            var withMinus = randyRandomizer.Hit(30);
            var nextname  = GetName(randyRandomizer, _sirIndexes, _sirname);

            return(withMinus ? name + "-" + nextname : name + " " + nextname);
        }