public static boolean equalsArray(Class<?>[] a1, Class<?>[] a2) {
			if (a1 == null || a2 == null || a1.length != a2.length)
				return false;
			for (int i = 0; i < a1.length; i++)
				if (!a1[i].equals(a2[i]) && !a1[i].isAssignableFrom(a2[i]))
					return false;
			return true;
		}