public Method getMethod(Class<?> clazz, String name) {
		Method m = null;
		try {
			for (Method tempMethod : clazz.getMethods()) {
				if (tempMethod.getName().equals(name)) {
					m = tempMethod;
					break;
				}
			}
		} catch (Exception e) {
			m = null;
		}
		return m;
	}
@Test
	public void testGetMethodDeepInheritance() {
		try {
			ReflectionEngine engine = new ReflectionEngine();
			MethodInvoker mInvoker;

			TestEngine2 tEngine2 = new TestEngine2();
			mInvoker = engine.getMethod(tEngine2, "method3", new Object[] { tEngine2 });
			assertArrayEquals(mInvoker.getMethod().getParameterTypes(), new Class[] { TestInterface.class });

			TestEngine3 tEngine3 = new TestEngine3();
			mInvoker = engine.getMethod(tEngine3, "method3", new Object[] { tEngine3 });
			assertArrayEquals(mInvoker.getMethod().getParameterTypes(), new Class[] { TestInterface.class });

		} catch (Exception e) {
			e.printStackTrace();
			fail();
		}
	}