code: public static ClassResolver weakCachingConcurrentResolver(ClassLoader classLoader) {
          return new CachingClassResolver(
                  new ClassLoaderClassResolver(defaultClassLoader(classLoader)),
                  new WeakReferenceMap<String, Class<?>>(
                          PlatformDependent.<String, Reference<Class<?>>>newConcurrentHashMap()));
      }
docs: non-aggressive concurrent cache
  good for shared cache, when we're worried about class unloading
  
  @param classLoader - specific classLoader to use, or null if you want to revert to default
  @return new instance of class resolver