	private Constructor getFirstMatchingConstructor(Object object) throws NoSuchMethodException {
		Constructor[] constructors = clazz.getDeclaredConstructors();
		Constructor constructor = null;
		for (int i = 0; i < constructors.length; i++) {
			Class[] parameterTypes = constructors[i].getParameterTypes();
			if (parameterTypes.length == 1 && (object == null || parameterTypes[i].isInstance(object))) {
				constructor = constructors[i];
				break;
			}
		}
		if (constructor == null) {
			if (object == null) {
				throw new NoSuchMethodException("No constructor found that can take a single argument");
			} else {
				throw new NoSuchMethodException("No constructor found that can take a single argument of type " + object.getClass());
			}
		}
		return constructor;
	}

	private Constructor getFirstMatchingConstructor(Object object) throws NoSuchMethodException {
		Constructor[] constructors = clazz.getDeclaredConstructors();
		Constructor constructor = null;
		for (int i = 0; i < constructors.length; i++) {
			Class[] parameterTypes = constructors[i].getParameterTypes();
			if (parameterTypes.length == 1 && (object == null || parameterTypes[0].isInstance(object))) {
				constructor = constructors[i];
				break;
			}
		}
		if (constructor == null) {
			if (object == null) {
				throw new NoSuchMethodException("No constructor found that can take a single argument");
			} else {
				throw new NoSuchMethodException("No constructor found that can take a single argument of type " + object.getClass());
			}
		}
		return constructor;
	}
