public Expression RemoveOuterParameter(Dictionary <Expression, Expression> processedExpressions)
        {
            Expression result;

            if (processedExpressions.TryGetValue(this, out result))
            {
                return(result);
            }

            var entityExpression = (EntityExpression)EntityExpression.RemoveOuterParameter(processedExpressions);
            var rankExpression   = (ColumnExpression)RankExpression.RemoveOuterParameter(processedExpressions);

            return(new FullTextExpression(FullTextIndex, entityExpression, rankExpression, null));
        }
        public Expression BindParameter(ParameterExpression parameter, Dictionary <Expression, Expression> processedExpressions)
        {
            Expression result;

            if (processedExpressions.TryGetValue(this, out result))
            {
                return(result);
            }

            var entityExpression = (EntityExpression)EntityExpression.BindParameter(parameter, processedExpressions);
            var rankExpression   = (ColumnExpression)RankExpression.BindParameter(parameter, processedExpressions);

            return(new FullTextExpression(FullTextIndex, entityExpression, rankExpression, parameter));
        }
        public Expression Remap(int[] map, Dictionary <Expression, Expression> processedExpressions)
        {
            if (!CanRemap)
            {
                return(this);
            }

            Expression result;

            if (processedExpressions.TryGetValue(this, out result))
            {
                return(result);
            }

            var remappedEntityExpression = (EntityExpression)EntityExpression.Remap(map, processedExpressions);
            var remappedRankExpression   = (ColumnExpression)RankExpression.Remap(map, processedExpressions);

            return(new FullTextExpression(FullTextIndex, remappedEntityExpression, remappedRankExpression, OuterParameter));
        }