private Method findMethodWithConversion(Collection<Method> setterMethods, Object value) throws Exception {
ExecutionContext ctx = ExecutionContext.Holder.getContext();
List<Method> matchingMethods = new ArrayList<Method>();
for (Method m : setterMethods) {
Type paramType = m.getGenericParameterTypes()[0];
if (ctx.canConvert(value, new GenericType(paramType))) matchingMethods.add(m);
}
if (matchingMethods.isEmpty()) return null;
else if (matchingMethods.size() == 1) return matchingMethods.get(0);
else throw new ComponentDefinitionException(