code: private static <E extends PreferenceTypeAdapter<?, ?>> E generateAdapter(Class<E> clazz) {
  		E adapter;
  		try {
  			lock.lock();
  			adapter = clazz.newInstance();
  			cache.put(clazz, adapter);
  		} catch (Throwable e) {
  			throw (new KriptonRuntimeException(e));
  		} finally {
  			lock.unlock();
  		}
  		return adapter;
  	}
docs: Generate adapter.
  
  @param <E> the element type
  @param clazz the clazz
  @return the e