code: def rem_or(self, start, end, instr, target=None, include_beyond_target=False):
          
  
          assert(start >= 0 and end <= len(self.code) and start <= end)
  
          try:    None in instr
          except: instr = [instr]
  
          instr_offsets = []
          for i in self.op_range(start, end):
              op = self.code[i]
              if op in instr:
                  if target is None:
                      instr_offsets.append(i)
                  else:
                      t = self.get_target(i, op)
                      if include_beyond_target and t >= target:
                          instr_offsets.append(i)
                      elif t == target:
                          instr_offsets.append(i)
  
          pjits = self.all_instr(start, end, self.opc.PJIT)
          filtered = []
          for pjit in pjits:
              tgt = self.get_target(pjit)-3
              for i in instr_offsets:
                  if i <= pjit or i >= tgt:
                      filtered.append(i)
              instr_offsets = filtered
              filtered = []
          return instr_offsets
docs: Find all <instr> in the block from start to end.
          <instr> is any python bytecode instruction or a list of opcodes
          If <instr> is an opcode with a target (like a jump), a target
          destination can be specified which must match precisely.
  
          Return a list with indexes to them or [] if none found.