private void DeleteRow(RowId rowId)
        {
            int timestamp = TableSnapshot <TRecord> .Timestamp();

            foreach (List <IIndex <TRecord> > list in this.table.Indexes)
            {
                if (list != null)
                {
                    foreach (IIndex <TRecord> index in list)
                    {
                        if (index.Timestamp != timestamp)
                        {
                            index.Delete(rowId);
                            index.Timestamp = timestamp;
                        }
                    }
                }
            }
            this.table.Delete(rowId);
        }
        public RowId Insert(ref TRecord data)
        {
            this.ValidateModification();
            RowId rowId     = this.table.Insert(ref data);
            int   timestamp = TableSnapshot <TRecord> .Timestamp();

            foreach (List <IIndex <TRecord> > list in this.table.Indexes)
            {
                if (list != null)
                {
                    foreach (IIndex <TRecord> index in list)
                    {
                        if (index.Timestamp != timestamp)
                        {
                            index.Insert(rowId);
                            index.Timestamp = timestamp;
                        }
                    }
                }
            }
            return(rowId);
        }