code: def run(self, quil_program, classical_addresses: List[int] = None,
              trials=1):
          
          if classical_addresses is None:
              caddresses = get_classical_addresses_from_program(quil_program)
  
          else:
              caddresses = {'ro': classical_addresses}
  
          buffers = self._connection._qvm_run(quil_program, caddresses, trials,
                                              self.measurement_noise, self.gate_noise,
                                              self.random_seed)
  
          if len(buffers) == 0:
              return []
          if 'ro' in buffers:
              return buffers['ro'].tolist()
  
          raise ValueError("You are using QVMConnection.run with multiple readout registers not "
                           "named `ro`. Please use the new `QuantumComputer` abstraction.")
docs: Run a Quil program multiple times, accumulating the values deposited in
          a list of classical addresses.
  
          :param Program quil_program: A Quil program.
          :param classical_addresses: The classical memory to retrieve. Specified as a list of
              integers that index into a readout register named ``ro``. This function--and
              particularly this argument--are included for backwards compatibility and will
              be removed in the future.
          :param int trials: Number of shots to collect.
          :return: A list of dictionaries of bits. Each dictionary corresponds to the values in
              `classical_addresses`.
          :rtype: list