A package for treating parts of one variable as a whole other variable. More description to come later, but the basic idea (via some of the tests) is: test list.stackLevels-1.1 { Passing the name of a child into a proc to be upvar'd\ will still modify the parent } -setup { reset main child } -body { proc modify {&var} { upvar 1 ${&var} var set var [string toupper $var] } set main {a b {c d} e} shadow child main 2 modify child set main } -result {a b {C D} e} test array.stackLevels-1.1 { Pass the child into a proc, and change it via upvar } -setup { reset main child } -body { proc modify {&var} { upvar 1 ${&var} var foreach {key value} [array get var] { set var($key) [expr {$value * 20}] } } array set main {a 1 b 2 c 3} shadow child main modify child getArraySorted main } -result {a 20 b 40 c 60}