def METHOD_NAME(self, value):
    """Given a value for dwell centre, what action would achieve that dwell centre
    value.
    Parameters
    ----------
    value: Any
        Dwell centre value for which the action is required.
    Returns
    -------
    ChangeDwellAction
        Action which will achieve this dwell centre.
    """
    if isinstance(value, (int, float)):
        value = Angle(value)
    elif isinstance(value, Angle):
        value = value
    else:
        raise ValueError("Can only generate action from an Angle/float/int type")
    if value not in self:
        return None  # Should this raise an error?
    # Use resolution to reach target value from initial value - does not exceed
    current_value = previous_value = self.initial_value
    if value > self.initial_value:
        while not np.isclose(float(abs(current_value)), float(abs(value)), atol=1e-6):
            if current_value > value:
                current_value = previous_value
                break
            previous_value = current_value
            current_value += self.resolution
    elif value < self.initial_value:
        while not np.isclose(float(abs(current_value)), float(abs(value)), atol=1e-6):
            if current_value < value:
                current_value = previous_value
                break
            previous_value = current_value
            current_value -= self.resolution
    elif value == self.initial_value:
        current_value = value
    else:
        raise ValueError()
    target_value = current_value
    rot_end_time, increasing = self._end_time_direction(target_value)
    return ChangeDwellAction(rotation_end_time=rot_end_time,
                             generator=self,
                             end_time=self.end_time,
                             target_value=target_value,
                             increasing_angle=increasing)