docs: def gen_all_voltages_for_injections(self, injections_raw):
          """For a given set of current injections AB, generate all possible
          unique potential measurements.
  
          After Noel and Xu, 1991, for N electrodes, the number of possible
          voltage dipoles for a given current dipole is :math:`(N - 2)(N - 3) /
          2`. This includes normal and reciprocal measurements.
  
          If current dipoles are generated with
          ConfigManager.gen_all_current_dipoles(), then :math:`N \cdot (N - 1) /
          2` current dipoles are generated. Thus, this function will produce
          :math:`(N - 1)(N - 2)(N - 3) / 4` four-point configurations ABMN, half
          of which are reciprocals (Noel and Xu, 1991).
  
          All generated measurements are added to the instance.
  
          Use ConfigManager.split_into_normal_and_reciprocal() to split the
          configurations into normal and reciprocal measurements.
  
          Parameters
          ----------
          injections: numpy.ndarray
              Kx2 array holding K current injection dipoles A-B
  
          Returns
          -------
          configs: numpy.ndarray
              Nax4 array holding all possible measurement configurations
  
          """
          injections = injections_raw.astype(int)
  
          N = self.nr_electrodes
          all_quadpoles = []
          for idipole in injections:
              # sort current electrodes and convert to array indices
              Icurrent = np.sort(idipole) - 1
  
              # voltage electrodes
              velecs = list(range(1, N + 1))
  
              # remove current electrodes
              del(velecs[Icurrent[1]])
              del(velecs[Icurrent[0]])
  
              # permutate remaining
              voltages = itertools.permutations(velecs, 2)
              for voltage in voltages:
                  all_quadpoles.append(
                      (idipole[0], idipole[1], voltage[0], voltage[1])
                  )
          configs_unsorted = np.array(all_quadpoles)
          # sort AB and MN
          configs_sorted = np.hstack((
              np.sort(configs_unsorted[:, 0:2], axis=1),
              np.sort(configs_unsorted[:, 2:4], axis=1),
          ))
          configs = self.remove_duplicates(configs_sorted)
  
          self.add_to_configs(configs)
          self.remove_duplicates()
          return configs