private bool ContainConflictingAnalyticFunctions()
        {
            var parentAnalyticFunctionRootNodes = _parentQueryBlock.Columns
                                                  .Where(c => c.HasExplicitDefinition)
                                                  .SelectMany(c => c.ProgramReferences)
                                                  .Where(p => p.AnalyticClauseNode != null)
                                                  .Select(p => p.RootNode[0])
                                                  .ToHashSet();

            var namedParentColumnReferences = _parentQueryBlock.Columns
                                              .Where(c => c.HasExplicitDefinition)
                                              .SelectMany(c => c.ColumnReferences)
                                              .Where(c => c.ValidObjectReference?.QueryBlocks.FirstOrDefault() == CurrentQueryBlock)
                                              .ToLookup(c => c.NormalizedName);

            foreach (var columnWithAnalyticFunction in CurrentQueryBlock.Columns.Where(OracleQueryBlock.PredicateContainsAnalyticFunction))
            {
                foreach (var parentColumnReference in namedParentColumnReferences[columnWithAnalyticFunction.NormalizedName])
                {
                    var parentAnalyticFunctionRootNode = OracleStatementValidator.GetParentAggregateOrAnalyticFunctionRootNode(parentColumnReference.RootNode);
                    if (parentAnalyticFunctionRootNodes.Contains(parentAnalyticFunctionRootNode))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }