code: public BeanDesc getBeanDesc(Class<?> clazz){
          if(clazz == Map.class || clazz == HashMap.class || clazz == LinkedHashMap.class){
              return new MapBeanDescImpl();
          }
  
          if(cacheEnabled && cacheMap.containsKey(clazz)){
              return cacheMap.get(clazz);
          }
  
          BeanDesc beanDesc = new BeanDescImpl(clazz, propertyExtractor.extractProperties(clazz));
  
          if(cacheEnabled){
              cacheMap.put(clazz, beanDesc);
          }
  
          return beanDesc;
      }
docs: Constructs a bean descriptor out of a class.
  
  @param clazz the class to create the descriptor from. For <code>Map.class</code>, <code>HashMap.class</code> and
  <code>LinkedHashMap.class</code> no properties can be extracted, so this operations needs to be done later.
  @return a descriptor