@classmethod
def is_empty2(cls, lower: 'SchemaRange', upper: 'SchemaRange') ->bool:
    """ Determines if the range given by taking lower bounds from lower and upper bound from upper is empty (contains nothing)
            is_integer is assumed to be their disjunction
        """
    is_integer = lower.is_integer or upper.is_integer
    if lower.minimum is not None and upper.maximum is not None:
        if lower.minimum > upper.maximum:
            return True
        if lower.minimum == upper.maximum and (lower.exclusive_minimum or
            upper.exclusive_maximum):
            return True
        if (is_integer and lower.exclusive_minimum and upper.
            exclusive_maximum and lower.minimum + 1 == upper.maximum):
            return True
    return False
