         if (program)
         {
             dumper.clear();
-            filterProgramInPlace(program, dumper);
+            filterProgram(program, dumper);
             out.push.apply(out, dumper.lines);
         }
         else

        }
    }

    private static function filterProgramCopy(program:Vector.<ASTNode>, filter:ASTFilter):Vector.<ASTNode>
    {
        var copy:Vector.<ASTNode> = new Vector.<ASTNode>(program.length, true);
        var deepCopier:DeepCopier = new DeepCopier();

    {
        if (!measureProgram) measure();
        if (!updateProgram) compileUpdateProgram();
        measuredUpdateProgram = copyProgram(updateProgram);
        filterProgram(measuredUpdateProgram, new ReadOnlyEvaluator());
        filterProgram(measuredUpdateProgram, new ArithmeticConstFolder());
        filterProgram(measuredUpdateProgram, new ArithmeticOptimizer());
    }

    public function dumpPrograms(linebuf:Array):void
