public static Maybe <Person> Maybe(NonEmptyString name, PositiveInt age) { return(NotNull(name) .And(NotNull(age)) .And(() => name.Text.Matches("^[a-zA-Z\\. ]+$")) .And(() => age.Number.ExclusiveBetween(0, 100)) .ThenMaybe(name.TupleWith(age)) .Select(t => new Person(t.Item1, t.Item2))); }