make isArrayLike more robust