just curious, since ``counts`` is passed in as ``object``, does cython do some crazy business with the variables here since it is reassigned type? Or does it remain as ``object`` behind the scenes? If so, then cython may be able to optimize further if ``counts`` is not reassigned but instead this cast to ``array`` is done into a new explicitly typed variable