The design decision I've made writing these generators produce are quite biased towards smaller trees. The reasons why I did that is that Quasiquotes don't need large trees to check their validity and it's expensive performance-wise and memory-wise to generate truly random trees. 

Most of the time only the type of the tree matters, not it's contents. This directly mirrors the way we compose regular ASTs: we can put one inside of the other as long as the place we put it has the same type. E.g. we can only use `ValDef`s as method parameters but we don't really care what is the contents of the `ValDef` when we compose our tree. It might matter later on but not for checking of tree composition validity.