code: @Override
      public boolean fileDeleted(final File file) throws WatchingException {
          // Delete the associated class file.
          // We delete more than required... but the inner class case is very tricky.
          Collection<File> files = FileUtils.listFiles(classes, new IOFileFilter() {
              @Override
              public boolean accept(File test) {
                  String classname = FilenameUtils.getBaseName(test.getName());
                  String filename = FilenameUtils.getBaseName(file.getName());
                  return classname.equals(filename) || classname.startsWith(filename + "$");
              }
  
              @Override
              public boolean accept(File dir, String name) {
                  return accept(new File(dir, name));
              }
          }, TrueFileFilter.INSTANCE);
  
          for (File clazz : files) {
              getLog().debug("Deleting " + clazz.getAbsolutePath() + " : " + clazz.delete());
          }
  
          compile();
          return true;
      }
docs: A new (accepted) file was deleted. This methods triggers the Java compilation.
  
  @param file the file
  @return {@literal true}
  @throws WatchingException thrown on compilation error. The thrown exception contains the file, line,
  character and reason of the compilation error.