internal void InsertPage(int pageNum, PRIndirectReference refi) {
--pageNum;
if (refsn != null) {
if (pageNum >= refsn.Count)
refsn.Add(refi);
else
refsn.Insert(pageNum, refi);
}
else {
++sizep;
lastPageRead = -1;
if (pageNum >= Size) {
refsp[Size] = refi.Number;
}
else {
IntHashtable refs2 = new IntHashtable((refsp.Size + 1) * 2);
for (IntHashtable.IntHashtableIterator it = refsp.GetEntryIterator(); it.HasNext();) {
IntHashtable.IntHashtableEntry entry = (IntHashtable.IntHashtableEntry)it.Next();
int p = entry.Key;
refs2[p >= pageNum ? p + 1 : p] = entry.Value;
}
refs2[pageNum] = refi.Number;
refsp = refs2;
}
}
}