/// <summary>
 /// Drops all common table expressions. This method should be called after each
 /// SELECT, INSERT, UPDATE, DELETE or MERGE statement
 /// </summary>
 /// <see href="https://docs.microsoft.com/en-us/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver15"/>
 internal void DropCommonTableExpressions()
 {
     while (CurrentDatabaseObjectContext.Count > 0 && CurrentDatabaseObjectContext.Peek().Type.Equals(DatabaseObjectType.CTE))
     {
         CurrentDatabaseObjectContext.Pop();
     }
 }
        /// <summary>
        /// Adds a database object to the current context stack and adds missing parts
        /// </summary>
        internal void AddDatabaseObjectToCurrentContext(DatabaseObject dbo)
        {
            if (dbo == null)
            {
                throw new ArgumentNullException("Invalid database object");
            }

            CurrentDatabaseObjectContext.Push(dbo);
        }