docs: def _update_bytes(self, defns, start=0):
          """Updates the 'bytes' field in all FieldDefinition.
  
          Any FieldDefinition.bytes which is undefined (None) or '@prev'
          will have its bytes field computed based on its data type size
          and where the previous FieldDefinition ended (or the start
          parameter in the case of very first FieldDefinition).  If
          bytes is set to '@prev', this has the effect of *starting* the
          FieldDefinition at the same place as the *previous*
          FieldDefinition.  This reads well in YAML, e.g.:
  
            bytes: '@prev'
  
          Returns the end of the very last FieldDefinition in Python
          slice notation, i.e. [start, stop).  This would correspond to
          the *start* of the next FieldDefinition, if it existed.
          """
  
          pos = slice(start, start)
          for fd in defns:
              if fd.bytes == '@prev' or fd.bytes is None:
                  if fd.bytes == '@prev':
                      fd.bytes = None
                      pos      = fd.slice(pos.start)
                  elif fd.bytes is None:
                      pos      = fd.slice(pos.stop)
                  if pos.start == pos.stop - 1:
                      fd.bytes = pos.start
                  else:
                      fd.bytes = [ pos.start, pos.stop - 1 ]
              pos = fd.slice()
          return pos.stop