This was created with a whole mess of Leancheck combinators. A Hedgehog approach makes things easier.