The Engine then uses org.apache.jmeter.engine.PreCompiler (A HashTreeTraverser) to do some processing on the tree prior to the tree being cloned for each thread that will be run. In other words, the PreCompiler's changes will affect every thread. The PreCompiler, at this time, only replaces user-defined variables with their actual values (from the TestPlan GUI).