code: protected boolean isRecompilable(Class cls) {
          if (cls == null) return true;
          if (cls.getClassLoader() == this) return false;
          if (recompile == null && !config.getRecompileGroovySource()) return false;
          if (recompile != null && !recompile) return false;
          if (!GroovyObject.class.isAssignableFrom(cls)) return false;
          long timestamp = getTimeStamp(cls);
          if (timestamp == Long.MAX_VALUE) return false;
          return true;
      }
docs: Indicates if a class is recompilable. Recompilable means, that the classloader
  will try to locate a groovy source file for this class and then compile it again,
  adding the resulting class as entry to the cache. Giving null as class is like a
  recompilation, so the method should always return true here. Only classes that are
  implementing GroovyObject are compilable and only if the timestamp in the class
  is lower than Long.MAX_VALUE.
  <p>
  NOTE: First the parent loaders will be asked and only if they don't return a
  class the recompilation will happen. Recompilation also only happen if the source
  file is newer.
  
  @param cls the class to be tested. If null the method should return true
  @return true if the class should be compiled again
  @see #isSourceNewer(URL, Class)