Program synthesis from domain specific object models by David Faitelson