code: def disco_loop(opc, version, queue, real_out, dup_lines=False,
                 show_bytes=False):
      
  
      while len(queue) > 0:
          co = queue.popleft()
          if co.co_name not in ('<module>', '?'):
              real_out.write("\n" + format_code_info(co, version) + "\n")
  
          bytecode = Bytecode(co, opc, dup_lines=dup_lines)
          real_out.write(bytecode.dis(show_bytes=show_bytes) + "\n")
  
          for c in co.co_consts:
              if iscode(c):
                  queue.append(c)
              pass
          pass
docs: Disassembles a queue of code objects. If we discover
      another code object which will be found in co_consts, we add
      the new code to the list. Note that the order of code discovery
      is in the order of first encountered which is not amenable for
      the format used by a disassembler where code objects should
      be defined before using them in other functions.
      However this is not recursive and will overall lead to less
      memory consumption at run time.