Produces a new model that has the desired domain.
Produces a new model that has the desired domain. This method came about because a situation arose where the data passed to the model was not in the most computationally efficient format. This method creates a stop-gap solution in the case that it's not worth rewriting an entire semantics implementation.
NOTE: This function requires that both model and f are non-null and will throw if they are.
input type of the model
input type of the model we want to create
output type of the model
a model whose domain is not
a function that maps the domain desired in the new model to the domain in the current model.
a new model with the new desired domain that creates the domain object using f and delegates to model.