public IncludeIdentitySelectorStatement(Statement original, IList <IIncludePlan> includes,
                                                IMartenSession session) : base(null)
        {
            ExportName = session.NextTempTableName();

            _includes = includes;

            _innerEnd  = (SelectorStatement)original.Current();
            FromObject = _innerEnd.SelectClause.FromObject;

            _clonedEnd             = _innerEnd.UseAsEndOfTempTableAndClone(this);
            _clonedEnd.SingleValue = _innerEnd.SingleValue;

            Inner = original;

            Statement current = this;

            foreach (var include in includes)
            {
                var includeStatement = include.BuildStatement(ExportName);

                current.InsertAfter(includeStatement);
                current = includeStatement;
            }

            current.InsertAfter(_clonedEnd);
        }