static IntRange fromType(Type type, bool isUnsigned)
{
    if (type.toBasetype().ty == Tdchar)
        upper.value = 0x10FFFFUL;
    else if (!isUnsigned)
    {
        lower.value = ~(mask >> 1);
        lower.value = ~(mask >> 1);
        lower.negative = true;
        upper.value = (mask >> 1);
    }
    uinteger_t minHalfChunk = imin.value & ~halfChunkMask;
    uinteger_t maxHalfChunk = imax.value & ~halfChunkMask;
    return IntRange(lower, upper);
}