def METHOD_NAME(self):
    """ See :meth:`pints.MultiChainMCMC.ask()`. """
    # Initialise on first call (will set first proposal)
    if not self._running:
        self._initialise()
    # Propose new points
    if self._proposed is None:
        # Cycle through chains
        if len(self._remaining) == 0:
            self._remaining = np.arange(self._n_chains)
        self._k = self._remaining[0]
        self._remaining = np.delete(self._remaining, 0)
        j = self._random_select_other_index(self._k)
        x_j = self._current[j]
        x_k = self._current[self._k]
        self._z = self._sample_z(self._a)
        self._proposed = x_j + self._z * (x_k - x_j)
        # Ensure proposed is array containing a single sample
        #TODO Switch to algorithm 3
        self._proposed = np.array([self._proposed])
        self._proposed.setflags(write=False)
    # Return proposed points
    return self._proposed