code: protected void crawl(File file, MappedKeyEngineer<K,V> engineer)
  	{
  		
  		if (!file.exists())
  		{
  			Debugger.println(file + " does not exist.");
  			return;
  		}
  		if (file.isDirectory())
  		{
  			File[] files = IO.listFiles(file, listPattern);
  
  			for (int i = 0; i < files.length; i++)
  			{
  				//recursive
  				if(!this.mustSkip(files[i]))
  				crawl(files[i],engineer);
  			}
  		}
  		else
  		{
  			try
  			{
  				engineer.construct(file.getPath(), this.constructMapToText(file.getPath()));
  				crawledPaths.add(file.getPath());				
  			}
  			catch(NoDataFoundException e)
  			{
  				//print warning if found not 
  				Debugger.printWarn(e);
  			}
  		}
  	}
docs: Director method to construct a document
  @param file the file the walk through
  @param engineer the mapped key engineer