This seems like a chicken and an egg problem to me.
class PersonInfoBuilder<SELF> : PersonBuilder
where SELF : PersonInfoBuilder<SELF>
// PersonBuilder is an abstract class in this example.
How does PersonInfoBuilder<SELF> : PersonBuilder
which has the constrains of SELF : PersonInfoBuiler<SELF>