IBTreeNode BuildBranchNode(long count, Func<IBTreeNode> generator)
{
if (count == 1) return generator();
var children = (count + BTreeBranch.MaxChildren - 1) / BTreeBranch.MaxChildren;
var order = 0L;
var done = 0L;
return BuildBranchNode(children, () =>
{
order++;
var reach = count * order / children;
var todo = (int)(reach - done);
done = reach;
return new BTreeBranch(_transactionId, todo, generator);
});
}