docs: public Class parseClass(final GroovyCodeSource codeSource, boolean shouldCacheSource) throws CompilationFailedException {
          // it's better to cache class instances by the source code
          // GCL will load the unique class instance for the same source code
          // and avoid occupying Permanent Area/Metaspace repeatedly
          String cacheKey = genSourceCacheKey(codeSource);
  
          return ((StampedCommonCache<String, Class>) sourceCache).getAndPut(
                  cacheKey,
                  new EvictableCache.ValueProvider<String, Class>() {
                      @Override
                      public Class provide(String key) {
                          return doParseClass(codeSource);
                      }
                  },
                  shouldCacheSource
          );
      }