code: public <T> CFMappingDef<T> initializeCacheForClass(Class<T> clazz) {
      CFMappingDef<T> cfMapDef = initializeColumnFamilyMapDef(clazz);
      try {
        initializePropertiesMapDef(cfMapDef);
      } catch (IntrospectionException e) {
        throw new HectorObjectMapperException(e);
      } catch (InstantiationException e) {
        throw new HectorObjectMapperException(e);
      } catch (IllegalAccessException e) {
        throw new HectorObjectMapperException(e);
      }
  
      // by the time we get here, all super classes and their annotations have
      // been processed and validated, and all annotations for this class have
      // been processed. what's left to do is validate this class, set super
      // classes, and and set any defaults
      checkMappingAndSetDefaults(cfMapDef);
  
      // if this class is not a derived class, then map the ColumnFamily name
      if (!cfMapDef.isDerivedEntity()) {
        cfMapByColFamName.put(cfMapDef.getEffectiveColFamName(), cfMapDef);
      }
  
      // always map the parsed class to its ColumnFamily map definition
      cfMapByClazz.put(cfMapDef.getRealClass(), cfMapDef);
  
      return cfMapDef;
    }
docs: For each class that should be managed, this method must be called to parse
  its annotations and derive its meta-data.
  
  @param <T>
  
  @param clazz
  @return CFMapping describing the initialized class.