code: @SuppressWarnings("unchecked")
      public static Map<String, String> buildStringAttributeMap(Object bean) throws IllegalArgumentException {
          try {
              return BeanUtils.describe(bean);
          } catch (Exception e) {
              ReflectionUtils.handleReflectionException(e);
              throw new IllegalStateException("Should never get here");
          }
      }
docs: returns the result of {@link BeanUtils#describe(Object)} converted to the proper generic map-type.
  
  Exceptions from Reflection are wrapped in {@link IllegalArgumentException}s
  
  @throws IllegalArgumentException if some property in the bean cannot be accessed