member variables draft. i think this is all the information that was being replaced by leaf and index iteration. - leaf count can be updated by summing children when graph is changed. - height is simply maximum child height + 1, can also update when graph is changed - parents is for adding dropped nodes to when branches are made more shallow. it can be prefix-compared against to find a shared ancestor when unifying neighboring entries. this shouldn't need an update for graph changes since the nontrimmed data is immutable. class Data: def __init__(self, offset, data, end = None, height = 0, parents = [], leaves = 1): self.start = offset self.data = data if end is None: self.end = self.start + len(self.data) self.height = 0 self.parents = parents self.leaves = 1