private void loadFromSubdirectory(File dir, String baseName) {
	  logger.info("Loading in subdir " + dir
			  + " with basename " + baseName);
	  int baseNameLength = baseName.length();
	  File[] files = dir.listFiles();
	  logger.info("Le listing : " + files);
	  //for (int i = 0; i < files.length; i++) {
	  for (File file : files) {
		  if (file.isDirectory()) {
			  loadFromSubdirectory(file, baseName);
			  continue;
		  }
		  // Not a directory
		  logger.info("Looking at file " + file.getPath() + ";" + file.getName());
		  String path = file.getPath();
		  String qualifiedClassName = getQualifiedName(baseNameLength, path);
		  if (qualifiedClassName != null) {
			  Class<IPlugin> plugin = loadOnePluginClass(qualifiedClassName);
			  if(plugin != null) {
				  boolean notLoaded = (loadedPluginClasses.get(plugin.getName()) == null);
				  if (notLoaded) {
					  logger.info("Class " + qualifiedClassName + " is a new plugin!");
					  loadedPluginClasses.put(plugin.getName(),plugin);
				  } else {
					  logger.info("Class " + qualifiedClassName + " is already loaded, IGNORING!");
				  }
			  }
		  }
	  }
  }