Given a general type 'pattern' that doesn't contain any data locations, and a data location,
produce a concrete instance of the general type for the target location.
This is the inverse of specializeType()
Note that this has to recursively fix sub-parts of compount types such as arrays and maps.
Note that this doesn't handle all possible expression types - just the ones that that may appear
in a variable declaration.
Given a general type 'pattern' that doesn't contain any data locations, and a data location, produce a concrete instance of the general type for the target location. This is the inverse of
specializeType()
Note that this has to recursively fix sub-parts of compount types such as arrays and maps. Note that this doesn't handle all possible expression types - just the ones that that may appear in a variable declaration.