public override WTableReference ToTableReference()
        {
            List <WScalarExpression> parameters = new List <WScalarExpression>();

            if (DedupVariables.Count > 0)
            {
                foreach (var dedupVariable in DedupVariables)
                {
                    parameters.Add(dedupVariable.DefaultVariableProperty().ToScalarExpression());
                }
            }
            else if (DedupContext != null)
            {
                parameters.Add(SqlUtil.GetScalarSubquery(DedupContext.ToSelectQueryBlock()));
            }
            else
            {
                parameters.Add(InputVariable.DefaultVariableProperty().ToScalarExpression());
            }

            var tableRef = SqlUtil.GetFunctionTableReference(
                Scope == GremlinKeyword.Scope.global ? GremlinKeyword.func.DedupGlobal : GremlinKeyword.func.DedupLocal,
                parameters, GetVariableName());

            return(SqlUtil.GetCrossApplyTableReference(tableRef));
        }
 internal override List <GremlinVariable> FetchVarsFromCurrAndChildContext()
 {
     return(DedupContext == null ? new List <GremlinVariable>() : DedupContext.FetchVarsFromCurrAndChildContext());
 }