code: def disassemble(self, data, address, architecture_mode=None):
          
          # TODO: Improve this code!
          if architecture_mode is None:
              if self._arch_mode is None:
                  architecture_mode = ARCH_ARM_MODE_THUMB
              else:
                  architecture_mode = self._arch_mode
  
          self._disassembler = self._available_disassemblers[architecture_mode]
  
          disasm = self._cs_disassemble_one(data, address)
  
          instr = self._cs_translate_insn(disasm)
  
          if instr:
              instr.address = address
              instr.size = disasm.size
              instr.bytes = data[0:disasm.size]
          else:
              raise DisassemblerError()
  
          return instr
docs: Disassemble the data into an instruction.