def METHOD_NAME(self):
    imax = np.iinfo(np.int32).max
    too_big = imax + 1
    # Check that uint32's with no values too large doesn't return
    # int64
    a1 = np.ones(90, dtype='uint32')
    a2 = np.ones(90, dtype='uint32')
    assert_equal(
        np.dtype(sputils.get_index_dtype((a1, a2), check_contents=True)),
        np.dtype('int32')
    )
    # Check that if we can not convert but all values are less than or
    # equal to max that we can just convert to int32
    a1[-1] = imax
    assert_equal(
        np.dtype(sputils.get_index_dtype((a1, a2), check_contents=True)),
        np.dtype('int32')
    )
    # Check that if it can not convert directly and the contents are
    # too large that we return int64
    a1[-1] = too_big
    assert_equal(
        np.dtype(sputils.get_index_dtype((a1, a2), check_contents=True)),
        np.dtype('int64')
    )
    # test that if can not convert and didn't specify to check_contents
    # we return int64
    a1 = np.ones(89, dtype='uint32')
    a2 = np.ones(89, dtype='uint32')
    assert_equal(
        np.dtype(sputils.get_index_dtype((a1, a2))),
        np.dtype('int64')
    )
    # Check that even if we have arrays that can be converted directly
    # that if we specify a maxval directly it takes precedence
    a1 = np.ones(12, dtype='uint32')
    a2 = np.ones(12, dtype='uint32')
    assert_equal(
        np.dtype(sputils.get_index_dtype(
            (a1, a2), maxval=too_big, check_contents=True
        )),
        np.dtype('int64')
    )
    # Check that an array with a too max size and maxval set
    # still returns int64
    a1[-1] = too_big
    assert_equal(
        np.dtype(sputils.get_index_dtype((a1, a2), maxval=too_big)),
        np.dtype('int64')
    )