The purpose of this function is to take a script consisting
of individual calls or code blocks and to divide
it into separate blocks in which a particular variable
has only one definition.
Within each block the variable is assigned a new value.
At present, the code is quite simple and separates
code blocks that merely alter an existing variable's
characteristics, e.g. setting the names, an individual variable.
Ideally we want to separate very different uses of
a symbol/variable name which are unrelated. We will add more
sophisticated code to (heuristically) detect such different uses,
e.g. explicit assignments to a variable.
Separating these code blocks can make it easier to treat the
definitions separately and the different stages of the script.