code: public Object invokeSetter(final Object instance, final Object value)
              throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
          final Class<?> valueClass = value.getClass();
          final Method method = getInvokableMethodForClass(valueClass);
          if (method == null) {
              throw new IllegalArgumentException(
                      "class " + instance.getClass().getName()
                              + " does not have an annotated setter for values of type " + valueClass.getName());
          }
  
          return method.invoke(instance, value);
      }
docs: Invokes the annotated setter appropriate to the passed value (must not be <code>null</code>).
  
  @throws IllegalArgumentException
  if there is no annotated method appropriate to the value
  @throws IllegalAccessException
  if unable to invoke the annotated method
  @throws InvocationTargetException
  if the invoked method threw an exception