code: void changeState(String propertyName, Object newValue) {
      try {
        ObjectUtils.setField(this, getFieldName(propertyName), newValue);
      }
      catch (IllegalArgumentException e) {
        throw new PropertyNotFoundException(String.format(
          "The property (%1$s) corresponding to field (%2$s) was not found in this Bean (%3$s)!",
            propertyName, getFieldName(propertyName), getClass().getName()), e);
      }
    }
docs: Changes the value of the given property, referenced by name, to the new Object value, effectively modifying
  the internal state of this Bean.  This method uses the Java reflective APIs to set the field corresponding
  to the specified property.
  
  @param propertyName a String value specifying the name of the property (internally, the field) to set to
  the new Object value.
  @param newValue an Object containing the new value for the given property (internally, the field).
  @throws PropertyNotFoundException if property referenced by name is not a property of this Bean.  This Exception
  occurs when the field for the corresponding property does not exist.
  @see #getFieldName(String)