docs: private boolean inspectChangedGrids()
  	{
  		HashMap<DensityGrid, CharacteristicVector> glNew = new HashMap<DensityGrid, CharacteristicVector>();
  		Iterator<Map.Entry<DensityGrid, CharacteristicVector>> gridIter = this.grid_list.entrySet().iterator();
  		
  		while (gridIter.hasNext() && glNew.isEmpty())
  		{
  			Map.Entry<DensityGrid, CharacteristicVector> grid = gridIter.next();
  			DensityGrid dg = grid.getKey();
  			CharacteristicVector cv = grid.getValue();
  			int dgClass = cv.getLabel();
  			
  			if(cv.isAttChanged() && !dg.isVisited())
  			{
  				dg.setVisited(true);
  				glNew.put(dg, cv);
  				//System.out.print(dg.toString()+" is changed and now ");
  				if (cv.getAttribute() == SPARSE)
  					glNew.putAll(adjustForSparseGrid(dg, cv, dgClass));
  				else if (cv.getAttribute() == DENSE)
  					glNew.putAll(adjustForDenseGrid(dg, cv, dgClass));
  				else	// TRANSITIONAL
  					glNew.putAll(adjustForTransitionalGrid(dg, cv, dgClass));
  			}
  		}
  		
  		// If there are grids in glNew, update the corresponding grids in grid_list and clean up the cluster list
  		if (!glNew.isEmpty())
  		{
  			//System.out.println("There are "+glNew.size()+" entries to update from glNew to grid_list.");
  			this.grid_list.putAll(glNew);
  			cleanClusters();
  			return true;
  		}
  		else
  			return false;
  	}