prev property
The previous bit in the text tree.
Note: the previous bit may not have the same parent or grandparent, it's only guaranteed to be within the same tree.
Implementation
TextBit get prev {
  TextBit x = this;
  while (x != null) {
    final siblings = x.parent?._children;
    final i = siblings?.indexOf(x) ?? -1;
    if (i != -1) {
      for (var j = i - 1; j > -1; j--) {
        final candidate = siblings[j];
        if (candidate is TextBits) {
          final last = candidate.last;
          if (last != null) return last;
        } else {
          return candidate;
        }
      }
    }
    x = x.parent;
  }
  return null;
}