public static Option <Person> FromDto(PersonDto dto)
        {
            var firstO        = String10.Create(dto.First);
            var lastO         = String10.Create(dto.Last);
            var ageO          = Age.Create(dto.Age);
            var emailO        = Email.Create(dto.Email);
            var createNameO   = Option.Lift2 <String10, String10, PersonalName>(PersonalName.Create);
            var nameO         = createNameO(firstO, lastO);
            var createPersonO = Option.Lift3 <PersonalName, Age, Email, Person>(Person.Create);
            var personO       = createPersonO(nameO, ageO, emailO);

            return(personO);
        }
 public static PersonalName Create(String10 first, String10 last)
 {
     return(new PersonalName(first, last));
 }
 public PersonalName(String10 first, String10 last)
 {
     this.First = first;
     this.Last  = last;
 }