as an expression, it creates a new record which needs the variables
ab a b y z d in-scope. ab needs to be a record, and if it has
fields called a or b they are overridden by the values of a and b
which are in scope.