Program synthesis from domain specific object models