code: @SuppressWarnings( { "unchecked" })
      public static <T> Enhancer<T> getUpdateObjectEnhancer(Class<T> baseClass) {
          if (updateObjectEnhancers.containsKey(baseClass)) {
              return (Enhancer<T>) updateObjectEnhancers.get(baseClass);
          }
  
          synchronized (updateObjectEnhancers) {
              Enhancer<T> enhancer = updateObjectEnhancers.get(baseClass);
  
              if (enhancer != null) {
                  return enhancer;
              }
  
              if (UpdateObject.class.isAssignableFrom(baseClass)) {
                  enhancer = new NoOpEnhancer<T>(baseClass);
              } else {
                  enhancer = new UpdateObjectVelocityEnhancer<T>(baseClass) {
                      //-------------------------------------------------------------
                      // Implementation - Enhancer
                      //-------------------------------------------------------------
  
                      @Override
                      public boolean needsEnhancement(Object object) {
                          return object != null && !(object instanceof UpdateObject);
                      }
  
  
                      //-------------------------------------------------------------
                      // Implementation - VelocityEnhancer
                      //-------------------------------------------------------------
  
                      @Override
                      protected String getTemplateLocation() {
                          return "org/iternine/jeppetto/dao/enhance/updateObject.vm";
                      }
  
  
                      @Override
                      protected Map<String, Object> getAdditionalContextItems() {
                          Map<String, Object> contextItems = super.getAdditionalContextItems();
  
                          contextItems.put("updateObjectHelper", new DynamoDBUpdateObjectHelper());
  
                          return contextItems;
                      }
                  };
              }
  
              updateObjectEnhancers.put(baseClass, enhancer);
  
              return enhancer;
          }
      }
docs: Creates a new dynamoDBUpdateObject enhancer for the given class. If the class already implements
  {@link UpdateObject}, then a special "no-op" enhancer will be returned that
  doesn't do any special enhancement. Otherwise, a byte-code enhancer is returned.
  
  @param baseClass class for which to create an enhancer
  
  @return new enhancer