@Test
public void matchesParametersClassObjectArray() {

	assertTrue(ReflectionUtil.matchesParameters(
			new Class<?>[0],
			new Object[0]));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[0],
			new Object[] { 1 }));
	
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class },
			new Object[0]));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class },
			new Object[] { 'c' }));
	assertTrue(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class },
			new Object[] { 3. }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class },
			new Object[] { 4f }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class },
			new Object[] { 1 }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[0]));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 'c' }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 3. }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 4. }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 1 }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 'c', "a" }));  //$NON-NLS-1$
	assertTrue(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 3., "a" }));  //$NON-NLS-1$
	assertTrue(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 4., "a" }));  //$NON-NLS-1$
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 1, "a" }));  //$NON-NLS-1$
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 'c', true }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 3., true }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 4., true }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class },
			new Object[] { 1, true }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class, Array.class },
			new Object[0]));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class, Array.class },
			new Object[] { 1. }));
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class, Array.class },
			new Object[] { 1., "a" }));  //$NON-NLS-1$
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class, Array.class },
			new Object[] { 1., "a", null }));  //$NON-NLS-1$
	assertFalse(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class, Array.class },
			new Object[] { 1., "a", new int[0] }));  //$NON-NLS-1$
	assertTrue(ReflectionUtil.matchesParameters(
			new Class<?>[] { Double.class, String.class, int[].class },
			new Object[] { 1., "a", new int[0] }));  //$NON-NLS-1$
	assertTrue(ReflectionUtil.matchesParameters(
			new Class<?>[] { Number.class, String.class, int[].class },
			new Object[] { 1., "a", new int[0] }));  //$NON-NLS-1$
}