code: public static Object readField(final Object target, final String fieldName, final boolean forceAccess) throws IllegalAccessException {
          Validate.isTrue(target != null, "target object must not be null");
          final Class<?> cls = target.getClass();
          final Field field = getField(cls, fieldName, forceAccess);
          Validate.isTrue(field != null, "Cannot locate field %s on %s", fieldName, cls);
          // already forced access above, don't repeat it here:
          return readField(field, target, false);
      }
docs: Reads the named {@link Field}. Superclasses will be considered.
  
  @param target
  the object to reflect, must not be {@code null}
  @param fieldName
  the field name to obtain
  @param forceAccess
  whether to break scope restrictions using the
  {@link java.lang.reflect.AccessibleObject#setAccessible(boolean)} method. {@code false} will only
  match {@code public} fields.
  @return the field value
  @throws IllegalArgumentException
  if {@code target} is {@code null}, or the field name is blank or empty or could not be found
  @throws IllegalAccessException
  if the named field is not made accessible