public static <T> int lastIndexOfSub(T[] array, T[] subArray) {
		if (isEmpty(array) || isEmpty(subArray)) {
			return INDEX_NOT_FOUND;
		}
		return lastIndexOfSub(array, array.length - 1, subArray);
	}
@Test
	public void lastIndexOfSubTest() {
		Integer[] a = {0x12, 0x34, 0x56, 0x78, 0x9A};
		Integer[] b = {0x56, 0x78};
		Integer[] c = {0x12, 0x56};
		Integer[] d = {0x78, 0x9A};
		Integer[] e = {0x78, 0x9A, 0x10};

		int i = ArrayUtil.lastIndexOfSub(a, b);
		assertEquals(2, i);

		i = ArrayUtil.lastIndexOfSub(a, c);
		assertEquals(-1, i);

		i = ArrayUtil.lastIndexOfSub(a, d);
		assertEquals(3, i);

		i = ArrayUtil.lastIndexOfSub(a, e);
		assertEquals(-1, i);

		i = ArrayUtil.lastIndexOfSub(a, null);
		assertEquals(-1, i);

		i = ArrayUtil.lastIndexOfSub(null, null);
		assertEquals(-1, i);

		i = ArrayUtil.lastIndexOfSub(null, b);
		assertEquals(-1, i);
	}