On designing safe and flexible embedded DSLs with Java 5 - Kabanov, Jevgeni; Hunger, Michael; Raudjärv, Rein (Science of Computer Programming, 2011)