Return ``True`` if this time interval ends
        when the given other time interval begins,
        and both have non zero length.

        :param other: the other interval
        :type  other: :class:`~aeneas.exacttiming.TimeInterval`
        :raises TypeError: if ``other`` is not an instance of ``TimeInterval``
        :rtype: bool

def is_non_zero_before_non_zero(self, other):
        """
        Return ``True`` if this time interval ends
        when the given other time interval begins,
        and both have non zero length.

        :param other: the other interval
        :type  other: :class:`~aeneas.exacttiming.TimeInterval`
        :raises TypeError: if ``other`` is not an instance of ``TimeInterval``
        :rtype: bool
        """
        return self.is_adjacent_before(other) and (not self.has_zero_length) and (not other.has_zero_length)