code: def _run_gates(self, gates, n_qubits, ctx):
          
          for gate in gates:
              action = self._get_action(gate)
              if action is not None:
                  ctx = action(gate, ctx)
              else:
                  ctx = self._run_gates(gate.fallback(n_qubits), n_qubits, ctx)
          return ctx
docs: Iterate gates and call backend's action for each gates