code: def all_instr(self, start, end, instr, target=None, include_beyond_target=False):
          
  
          code = self.code
          assert(start >= 0 and end <= len(code))
  
          try:
              None in instr
          except:
              instr = [instr]
  
          result = []
          extended_arg = 0
          for offset in self.op_range(start, end):
  
              op = code[offset]
  
              if op == self.opc.EXTENDED_ARG:
                  arg = code2num(code, offset+1) | extended_arg
                  extended_arg = extended_arg_val(self.opc, arg)
                  continue
  
              if op in instr:
                  if target is None:
                      result.append(offset)
                  else:
                      t = self.get_target(offset, extended_arg)
                      if include_beyond_target and t >= target:
                          result.append(offset)
                      elif t == target:
                          result.append(offset)
                          pass
                      pass
                  pass
              extended_arg = 0
              pass
  
          return result
docs: Find all `instr` in the block from start to end.
          `instr` is any Python opcode 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.