docs: def _inject_jump(self, where, dest):
      """
      Monkeypatch bytecode at ``where`` to force it to jump to ``dest``.
  
      Returns function which puts things back to how they were.
      """
      # We're about to do dangerous things to a function's code content.
      # We can't make a lock to prevent the interpreter from using those
      # bytes, so the best we can do is to set the check interval to be high
      # and just pray that this keeps other threads at bay.
      if sys.version_info[0] < 3:
          old_check_interval = sys.getcheckinterval()
          sys.setcheckinterval(2**20)
      else:
          old_check_interval = sys.getswitchinterval()
          sys.setswitchinterval(1000)
  
      pb = ctypes.pointer(self.ob_sval)
      orig_bytes = [pb[where + i][0] for i in range(3)]
  
      v = struct.pack("<BH", opcode.opmap["JUMP_ABSOLUTE"], dest)
  
      # Overwrite code to cause it to jump to the target
      if sys.version_info[0] < 3:
          for i in range(3):
              pb[where + i][0] = ord(v[i])
      else:
          for i in range(3):
              pb[where + i][0] = v[i]
  
      def tidy_up():
          """
          Put the bytecode back to how it was. Good as new.
          """
          if sys.version_info[0] < 3:
              sys.setcheckinterval(old_check_interval)
          else:
              sys.setswitchinterval(old_check_interval)
          for i in range(3):
              pb[where + i][0] = orig_bytes[i]
  
      return tidy_up