docs: protected long save() {
          // save leaf nodes
          ReclaimFlag flag = saveChildren();
          // save self. complementary to {@link load()}
          final byte type = getType();
          final BTreeBase tree = getTree();
          final int structureId = tree.structureId;
          final Log log = tree.log;
          if (flag == ReclaimFlag.PRESERVE) {
              // there is a chance to update the flag to RECLAIM
              if (log.getWrittenHighAddress() % log.getFileLengthBound() == 0) {
                  // page will be exactly on file border
                  flag = ReclaimFlag.RECLAIM;
              } else {
                  final ByteIterable[] iterables = getByteIterables(flag);
                  long result = log.tryWrite(type, structureId, new CompoundByteIterable(iterables));
                  if (result < 0) {
                      iterables[0] = CompressedUnsignedLongByteIterable.getIterable(
                          (size << 1) + ReclaimFlag.RECLAIM.value
                      );
                      result = log.writeContinuously(type, structureId, new CompoundByteIterable(iterables));
  
                      if (result < 0) {
                          throw new TooBigLoggableException();
                      }
                  }
                  return result;
              }
          }
          return log.write(type, structureId, new CompoundByteIterable(getByteIterables(flag)));
      }