docs: def _setint(self, int_, length=None):
          """Reset the bitstring to have given signed int interpretation."""
          # If no length given, and we've previously been given a length, use it.
          if length is None and hasattr(self, 'len') and self.len != 0:
              length = self.len
          if length is None or length == 0:
              raise CreationError("A non-zero length must be specified with an int initialiser.")
          if int_ >= (1 << (length - 1)) or int_ < -(1 << (length - 1)):
              raise CreationError("{0} is too large a signed integer for a bitstring of length {1}. "
                                  "The allowed range is [{2}, {3}].", int_, length, -(1 << (length - 1)),
                                  (1 << (length - 1)) - 1)
          if int_ >= 0:
              self._setuint(int_, length)
              return
          # TODO: We should decide whether to just use the _setuint, or to do the bit flipping,
          # based upon which will be quicker. If the -ive number is less than half the maximum
          # possible then it's probably quicker to do the bit flipping...
  
          # Do the 2's complement thing. Add one, set to minus number, then flip bits.
          int_ += 1
          self._setuint(-int_, length)
          self._invert_all()