Как безопасно выполнить рефакторинг на языке с динамической областью действия?

Для тех из вас, кому посчастливилось не работать на языке с динамической областью действия, позвольте мне немного освежить в этом информацию. Представьте себе псевдо-язык, названный "RUBELLA", который ведет себя так: function foo() { print(x); // not defined locally => uses whatever value `x`...