Generic abstract model for code generation