code: protected void loadCitiesFileToTree(String gnObjectsFilename, Map<String, String> countryCodes){
  		EasyBufferedReader reader = new EasyBufferedReader(gnObjectsFilename);
  		String line = null;
  		int count = 0;
  		long t0 = System.currentTimeMillis();
  		logger.info("loading of objects started");
  		while ((line = reader.readLine()) != null){
  			if (line.trim().length() < 1) continue;
  			count++;
  			GeoObject city = new GeoObject(line);
  			
  			double[] coords = new double[2];
  			coords[0] = city.getLat();
  			coords[1] = city.getLon();
  			try {
  				tree.insert(coords, new LightweightGeoObject(city));
  			} catch (KeySizeException e) {
  				logger.error(e.getMessage());
  			} catch (KeyDuplicateException e) {
  				logger.error(e.getMessage());
  			}
  		}
  		logger.info(count + " objects loaded in " + (System.currentTimeMillis()-t0)/1000.0 + "secs");
  
  		reader.close();
  		logger.info("file " + gnObjectsFilename + " closed");
  	}
docs: A kd-tree is loaded with the set of geographical objects. The key for each entry
  corresponds to its lat/lon coordinates, while the value is a LightweightGeoObject
  @param gnObjectsFilename
  @param countryCodes