private void AnalyzeUpdateStatement(UpdateStatement updateStatement, ParserResults results)
        {
            updateStatement.PrintTSqlStatementBlockToDebugConsole();
            List <TableParsingResult> temp = new List <TableParsingResult>();

            Dictionary <string, List <TableParsingResult> > cteModel = new Dictionary <string, List <TableParsingResult> >();

            if (updateStatement.WithCtesAndXmlNamespaces?.CommonTableExpressions.Count > 0)
            {
                foreach (CommonTableExpression cte in updateStatement.WithCtesAndXmlNamespaces.CommonTableExpressions)
                {
                    AnalyzeCommonTableExpression(cteModel, cte);
                }
            }

            if (updateStatement.UpdateSpecification.Target is NamedTableReference updateNamedTableReference)
            {
                string tableName = ExtraceTableNameFromNamedTableRefernce(updateNamedTableReference, out string alias);
                if (updateStatement.UpdateSpecification.FromClause == null)
                {
                    temp.AddIfNotExists(tableName, SqlOperationType.UPDATE, alias);
                }
                else
                {
                    var items = ExtractTablesUsedInFromClause(updateStatement.UpdateSpecification.FromClause);
                    if (cteModel.Count > 0)
                    {
                        foreach (var cte in cteModel)
                        {
                            var item = items.Find(x => x.TableName == cte.Key);
                            if (item != null)
                            {
                                items.Remove(item);
                                foreach (var table in cte.Value)
                                {
                                    items.AddIfNotExists(table.TableName, table.OperationType, table.Alias);
                                }
                            }
                        }
                    }
                    temp.AddIfNotExists(items);

                    var result = items.Find(x => x.Alias == tableName);
                    if (result != null)
                    {
                        results.AddIfNotExists(result.TableName, SqlOperationType.UPDATE, tableName);
                    }
                }

                foreach (var setClause in updateStatement.UpdateSpecification.SetClauses)
                {
                    temp.AddIfNotExists(ExtractTablesUsedInAssignmentClause(setClause));
                }
            }

            updateStatement.PrintTablesToDebugConsole(temp);
            results.AddIfNotExists(temp);
        }