public void RegisterMarried(PersonWithMetadata parent1, PersonWithMetadata parent2)
        {
            var father = parent1;
            var mother = parent2;

            if (parent1.IsFemale && !parent2.IsFemale)
            {
                father = parent2;
                mother = parent1;
            }

            var howManyOtherChildrenFather = _numberOfOtherChildrenForMarriedCouples(father);
            var howManyOtherChildrenMother = _numberOfOtherChildrenForMarriedCouples(mother);

            var couple = new Couple
            {
                FatherNin = father.Person.NIN,
                MotherNin = mother.Person.NIN,
                FatherSn  = father.Person.Sn,
                MotherSn  = mother.Person.Sn
            };

            AddToCoupleCache(couple, ParentRelationshipSearch.KeyMarriedParents(father, mother), false);

            if (howManyOtherChildrenFather > 0)
            {
                AddToParentCacheReturnKey(howManyOtherChildrenFather, father);
            }

            if (howManyOtherChildrenMother > 0)
            {
                AddToParentCacheReturnKey(howManyOtherChildrenMother, mother);
            }
        }