docs: def _readtoken(self, name, pos, length):
          """Reads a token from the bitstring and returns the result."""
          if length is not None and int(length) > self.length - pos:
              raise ReadError("Reading off the end of the data. "
                              "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
          try:
              val = name_to_read[name](self, length, pos)
              return val, pos + length
          except KeyError:
              if name == 'pad':
                  return None, pos + length
              raise ValueError("Can't parse token {0}:{1}".format(name, length))
          except TypeError:
              # This is for the 'ue', 'se' and 'bool' tokens. They will also return the new pos.
              return name_to_read[name](self, pos)