code: public boolean modified() {
  
          if (log.isDebugEnabled())
              log.debug("modified()");
  
          for (Entry<String,ResourceEntry> entry : resourceEntries.entrySet()) {
              long cachedLastModified = entry.getValue().lastModified;
              long lastModified = resources.getClassLoaderResource(
                      entry.getKey()).getLastModified();
              if (lastModified != cachedLastModified) {
                  if( log.isDebugEnabled() )
                      log.debug(sm.getString("webappClassLoader.resourceModified",
                              entry.getKey(),
                              new Date(cachedLastModified),
                              new Date(lastModified)));
                  return true;
              }
          }
  
          // Check if JARs have been added or removed
          WebResource[] jars = resources.listResources("/WEB-INF/lib");
          // Filter out non-JAR resources
  
          int jarCount = 0;
          for (WebResource jar : jars) {
              if (jar.getName().endsWith(".jar") && jar.isFile() && jar.canRead()) {
                  jarCount++;
                  Long recordedLastModified = jarModificationTimes.get(jar.getName());
                  if (recordedLastModified == null) {
                      // Jar has been added
                      log.info(sm.getString("webappClassLoader.jarsAdded",
                              resources.getContext().getName()));
                      return true;
                  }
                  if (recordedLastModified.longValue() != jar.getLastModified()) {
                      // Jar has been changed
                      log.info(sm.getString("webappClassLoader.jarsModified",
                              resources.getContext().getName()));
                      return true;
                  }
              }
          }
  
          if (jarCount < jarModificationTimes.size()){
              log.info(sm.getString("webappClassLoader.jarsRemoved",
                      resources.getContext().getName()));
              return true;
          }
  
  
          // No classes have been modified
          return false;
      }
docs: Have one or more classes or resources been modified so that a reload
  is appropriate?