public Method factoryMethod(Object... args) {

		for (Method m : factoryMethods()) {
			Class<?>[] argTypes = Lang.evalToTypes(args);
			if (isMatchArgTypes(argTypes, m.getParameterTypes())) {
				return m;
			}

		}

		throw Lang.uncheck(new NoSuchMethodException());
	}