def changes_overlap(first_change, second_change):
    """Return whether first_change and second_change overlap."""
    if (first_change.start >= second_change.start and first_change.start <
        second_change.end):
        return True
    if (first_change.end >= second_change.start and first_change.end <
        second_change.end):
        return True
    if (second_change.start >= first_change.start and second_change.start <
        first_change.end):
        return True
    if (second_change.end >= first_change.start and second_change.end <
        first_change.end):
        return True
    return False
