private Method method(String name, Class<?>... argTypes) {

		try {

			if (null == argTypes || argTypes.length == 0) {
				return clazz.getMethod(name);
			}

			for (Method method : clazz.getMethods()) {
				if (!method.getName().equals(name)) {
					continue;
				}

				Class<?>[] paramsTypes = method.getParameterTypes();
				if (isMatchArgTypes(argTypes, paramsTypes)) {
					return method;
				}
			}

			throw new NoSuchMethodException();
		} catch (Exception e) {
			throw Lang.uncheck(e);
		}
	}