class ValueSetter {

	public void invoke(String aKey, Object anOn, String aWith) {
		try {
			if (twoArgSetter) {
				setter.invoke(anOn, aKey, converter.convert(aWith));
			} else {
				setter.invoke(anOn, converter.convert(aWith));
			}
		} catch (ParsingException anExc) {
			throw anExc;
        } catch (IllegalArgumentException anExc) {
            throw new ParsingException(
                anExc.getMessage() +
                " while trying to invoke " + setter +
                " on " + anOn +
                " with " + ((aKey != null) ? aKey + " and " : "") + aWith +
                " converted by " + converter, anExc);
		} catch (Exception anExc) {
			throw new RuntimeException(anExc);
		}
	}

	public  ValueSetter(ConverterRegistry aConverters, Class<?> aContextType, String... aMaybeNames);
	public  ValueSetter(ConverterRegistry aConverters, Class<?> aContextType, Class<?> aValueType, String... aMaybeNames);

}