A has an associated lower bound (null or a key).

    A has an associated upper bound (null or a key).

    A has an associated lower open flag. Unless otherwise stated it is unset.

    A key range has an associated upper open flag. Unless otherwise stated it is unset.

    A may have a lower bound its upper bound. A must not have a lower bound its upper bound.

    A containing only key has both lower bound and equal to key.

    The steps to convert a value to a key range with value and optional null disallowed flag are as follows:

    1. If value is a , return value.

    2. Let key be the result of running the steps to convert a value to a key with value. Rethrow any exceptions.

    3. If key is invalid, a ““ .

    4. Return a key range key.