Type-safe builder

A construction API whose types restrict the structures or call sequences a client can express.