'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.'

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 = []
    for i in self.op_range(start, end):
        op = code[i]
        if (op in instr):
            if (target is None):
                result.append(i)
            else:
                t = self.get_target(i, op)
                if (include_beyond_target and (t >= target)):
                    result.append(i)
                elif (t == target):
                    result.append(i)
    return result
