docs: protected Class recompile(URL source, String className, Class oldClass) throws CompilationFailedException, IOException {
          if (source != null) {
              // found a source, compile it if newer
              if (oldClass == null || isSourceNewer(source, oldClass)) {
                  String name = source.toExternalForm();
  
                  sourceCache.remove(name);
  
                  if (isFile(source)) {
                      try {
                          return parseClass(new GroovyCodeSource(new File(source.toURI()), sourceEncoding));
                      } catch (URISyntaxException e) {
                          // do nothing and fall back to the other version
                      }
                  }
                  return parseClass(new InputStreamReader(URLStreams.openUncachedStream(source), sourceEncoding), name);
              }
          }
          return oldClass;
      }