public static Object readField(Object bean, String fieldName)
    {
        Field field = getField(bean.getClass(), fieldName);

        // Ensure we can access even if field or class is not public
        field.setAccessible(true);

        Throwable cause = null;
        try
        {
            return field.get(bean);
        }
        catch(Exception e)
        {
            cause = e;
        }
        if(cause instanceof RuntimeException)
        {
            throw (RuntimeException) cause;
        }
        throw new RuntimeException(cause);
    }