Another obscure one, but with possibly surprising side-effects. In createparam(), we first call gethashnode2() to read the global paramtab directly and then decide whether a new parameter is being created or an existing (but unset) one is being restored. However, for readonly special parameters, calling the paramtab API getnode2 might be necessary to find the right scope for the new parameter ... or more precisely, to find out if there is either already a parameter in that scope that should not be restored, or a named reference whose referent should be neither created nor restored. This mostly affects parameters being assigned by addvars(), that is, assignment expressions with no declaration. If "typeset" is being used, it only matters when the -g option is passed, because otherwise a local is being created. The most consistent place to add test for this is with private namerefs.