def METHOD_NAME(self, other: "Availability", strict: bool) -> bool:
    """Test if two Availabilities overlap.
    :param strict: Only count a real overlap as overlap, not direct adjacency.
    """
    if not isinstance(other, Availability):
        raise Exception("Please provide an Availability object")
    if strict:
        return (
            (self.start <= other.start < self.end)
            or (self.start < other.end <= self.end)
            or (other.start <= self.start < other.end)
            or (other.start < self.end <= other.end)
        )
    return (
        (self.start <= other.start <= self.end)
        or (self.start <= other.end <= self.end)
        or (other.start <= self.start <= other.end)
        or (other.start <= self.end <= other.end)
    )