@staticmethod
def add_to_path(path, phase_point, left, right):
    """
        Add a phase point and perform some checks.

        This method is intended to be used by the propagate methods.

        Parameters
        ----------
        path : object like :py:class:`.PathBase`
            The path to add to.
        phase_point : object like py:class:`.System`
            The phase point to add to the path.
        left : float
            The left interface.
        right : float
            The right interface.

        """
    status = 'Running propagate...'
    success = False
    stop = False
    add = path.append(phase_point)
    if not add:
        if path.length >= path.maxlen:
            status = 'Max. path length exceeded'
        else:
            status = 'Could not add for unknown reason'
        success = False
        stop = True
    if path.phasepoints[-1].order[0] < left:
        status = 'Crossed left interface!'
        success = True
        stop = True
    elif path.phasepoints[-1].order[0] > right:
        status = 'Crossed right interface!'
        success = True
        stop = True
    if path.length == path.maxlen:
        status = 'Max. path length exceeded!'
        success = False
        stop = True
    return status, success, stop, add
