code: public static ClassResolver softCachingResolver(ClassLoader classLoader) {
          return new CachingClassResolver(
                  new ClassLoaderClassResolver(defaultClassLoader(classLoader)),
                  new SoftReferenceMap<String, Class<?>>(new HashMap<String, Reference<Class<?>>>()));
      }
docs: aggressive non-concurrent cache
  good for non-shared cache, when we're not 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