docs: public void startAutoload() 
      {
          if ( autoloadThread != null 
                  || config.getLexiconPath() == null ) {
              return;
          }
          
          //create and start the lexicon auto load thread
          autoloadThread = new Thread(new Runnable() {
              @Override
              public void run() {
                  String[] paths = config.getLexiconPath();
                  AutoLoadFile[] files = new AutoLoadFile[paths.length];
                  for ( int i = 0; i < files.length; i++ ) {
                      files[i] = new AutoLoadFile(paths[i] + "/" + AL_TODO_FILE);
                      files[i].setLastUpdateTime(files[i].getFile().lastModified());
                  }
                  
                  while ( true ) {
                      //sleep for some time (seconds)
                      try {
                          Thread.sleep(config.getPollTime() * 1000);
                      } catch (InterruptedException e) {break;}
                      
                      
                      //check the update of all the reload todo files
                      File f          = null;
                      AutoLoadFile af = null;
                      
                      for ( int i = 0; i < files.length; i++ ) {
                          af  = files[i];
                          f   = files[i].getFile();
                          
                          if ( ! f.exists() ) continue;
                          if ( f.lastModified() <= af.getLastUpdateTime() ) {
                              continue;
                          }
                          
                          //load words form the lexicon files
                          try {
                              BufferedReader reader = new BufferedReader(new FileReader(f));
                              String line = null;
                              while ( ( line = reader.readLine() ) != null ) {
                                  line = line.trim();
                                  if ( line.indexOf('#') != -1 ) continue;
                                  if ( "".equals(line) ) continue; 
                                  load(paths[i] + "/" + line);
                              }
                              
                              reader.close();
                              
                              FileWriter fw = new FileWriter(f);
                              fw.write("");
                              fw.close();
                              
                              //update the last update time
                              //@Note: some file system may close the in-time last update time update
                              //    in that case, this won't work normally.
                              //but, it will still work!!!
                              af.setLastUpdateTime(f.lastModified());
                              //System.out.println("newly added words loaded for path " + f.getParent());
                          } catch (IOException e) {
                              break;
                          }
                      }
                      
                      //flush the synonyms buffer
                      resetSynonymsNet();
                  }
              }
              
          });
          
          autoloadThread.setDaemon(true);
          autoloadThread.start();
      }