private static PhysicalTask.SequenceTask ProcessHelperTables(AstTask.AstContainerTaskNode astNode, PhysicalTask.SequenceTask sequenceTask)
        {
            foreach (AstTable.AstTableNode helperTableNode in astNode.HelperTables)
            {
                IR.TSQL.Table helperTable = helperTableNode.Lower();
                if (helperTable != null)
                {
                    AstTask.AstExecuteSQLTaskNode createHelperTableTask = new VulcanEngine.IR.Ast.Task.AstExecuteSQLTaskNode();
                    createHelperTableTask.ParentASTNode = astNode;
                    createHelperTableTask.Name = "__Create HelperTable " + helperTable.Name;
                    createHelperTableTask.Connection = helperTableNode.Connection;
                    createHelperTableTask.ExecuteDuringDesignTime = helperTableNode.ExecuteDuringDesignTime;
                    createHelperTableTask.Type = VulcanEngine.IR.Ast.Task.ExecuteSQLTaskType.File;
                    createHelperTableTask.Body = new TSQLEmitter.TablePlatformEmitter().Emit(helperTable);
                    sequenceTask.Tasks.Insert(0, createHelperTableTask.Lower());

                    AstTask.AstExecuteSQLTaskNode dropHelperTableTask = new VulcanEngine.IR.Ast.Task.AstExecuteSQLTaskNode();
                    dropHelperTableTask.ParentASTNode = astNode;
                    dropHelperTableTask.Name = "__Drop HelperTable " + helperTable.Name;
                    dropHelperTableTask.Connection = helperTableNode.Connection;
                    dropHelperTableTask.ExecuteDuringDesignTime = false;
                    dropHelperTableTask.Type = VulcanEngine.IR.Ast.Task.ExecuteSQLTaskType.Expression;
                    dropHelperTableTask.Body = String.Format("\"{0}\"", new TSQLEmitter.TemplatePlatformEmitter("DropHelperTable", helperTable.Name).Emit(helperTable));
                    sequenceTask.Tasks.Add(dropHelperTableTask.Lower());
                }
            }

            return sequenceTask;
        }