public static void Fill(EntityExpression entityExpression, int offset)
        {
            using (new RemapScope()) {
                entityExpression.Remap(offset, new Dictionary <Expression, Expression>());
            }
            var typeInfo = entityExpression.PersistentType;

            foreach (var nestedField in typeInfo.Fields.Except(entityExpression.Fields.OfType <FieldExpression>().Select(field => field.Field)))
            {
                var nestedFieldExpression = BuildNestedFieldExpression(nestedField, offset);
                var fieldExpression       = nestedFieldExpression as FieldExpression;
                if (fieldExpression != null)
                {
                    fieldExpression.Owner = entityExpression;
                }
                entityExpression.fields.Add(nestedFieldExpression);
            }
        }
        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));
        }