code: public void set(Object obj, Object value) throws ReflectionException {
          try {
              if (isPublic(writeMethod)) {
                  writeMethod.invoke(obj, value);
              } else {
                  throw new ReflectionException("Cannot set the value of " + this + ", as it is read-only.");
              }
          } catch (Exception e) {
              throw new ReflectionException("Cannot set the value of " + this + " to object " + obj, e);
          }
      }
docs: Sets a new value to the representation of this property on the specified object.
  
  <p> The underlying property's value will be updated trying
  to invoke the {@code writeMethod}.
  
  <p> If this {@link Property} object has no public {@code writeMethod}, it is considered read-only,
  and the action will be prevented throwing a {@link ReflectionException}.
  
  <p>The new value is automatically unwrapped if the property has a primitive type.
  
  @param obj   the object whose property should be modified
  @param value the new value for the property of {@code obj}, can be {@code null}
  @throws ReflectionException if accessing to the underlying method throws an exception
  @throws ReflectionException if this property is read-only (no public writeMethod)