Automatically generating types by running tests

Test-Driven Development