//public TableView Table { get; set; }
 //public Func<object, int> Key1Producer { get; set; }
 //public Func<object, Tkey> Key2Producer { get; set; }
 //public Func<Tkey, int> Half2Producer { get; set; }
 public IndexCascadingDynamic(string path, IBearingTableImmutable table,
                              Func <object, int> key1Producer, Func <object, Tkey> key2Producer, Func <Tkey, int> half2Producer)
 {
     index_arr = new IndexCascadingImmutable <Tkey>(path,
                                                    table,
                                                    key1Producer,
                                                    key2Producer,
                                                    half2Producer);
 }
        public IndexCascadingImmutable(string pathName, IBearingTableImmutable table, Func <object, int> key1Producer, Func <object, Tkey> key2Producer, Func <Tkey, int> half2Producer)
        {
            PType tp_record = new PTypeRecord(
                new NamedType("offset", new PType(PTypeEnumeration.longinteger)),
                new NamedType("key1", new PType(PTypeEnumeration.integer)),
                new NamedType("keyhkey2", new PType(PTypeEnumeration.integer)));

            index_cell = new PaCell(new PTypeSequence(tp_record),
                                    pathName + "_2.pac", false);
            groups_index = new PaCell(new PTypeSequence(new PType(PTypeEnumeration.integer)),
                                      pathName + "_g.pac", false);

            Table         = table;
            Key1Producer  = key1Producer;
            Key2Producer  = key2Producer;
            Half2Producer = half2Producer;
        }