@Override
	public void Run()
	{
		int[] levels = new int[]{1,5,20,50,100};
		List<ClassDocumentation> classDocs = DeserializeModel(Java);

		//HashSet<Date> allDates = new HashSet<Date>();
		
		Hashtable<Integer,List<ClassSaturation>> saturationData = new Hashtable<Integer,List<ClassSaturation>>();
		for( int level : levels )
		{
			List<ClassSaturation> classSats = Saturation(level,classDocs);
			saturationData.put(level,classSats);
			
			// Track all dates
			//for( ClassSaturation classSat : classSats )
			//{
			//	for( Date satEvent : classSat.SaturationEvents )
			//	{
			//		allDates.add(satEvent);
			//	}
			//}
		}

		//ArrayList<Date> sortedAllDates = new ArrayList<Date>(allDates);
		//Collections.sort(sortedAllDates);
		
		// To have a fair linear date time, we need to start at the same time, and inc by one
		SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy");
		ArrayList<Date> sortedAllDates = new ArrayList<Date>();
		try
		{
			Date startDate = format.parse("07-31-2008");
			Date endDate = format.parse("12-01-2011"); // exclusive
			Date curDate = startDate;
			while( curDate.before(endDate) )
			{
				sortedAllDates.add(curDate);
				curDate = IncrementByDay(curDate);
			}
		}
		catch(ParseException ex)
		{
			ex.printStackTrace();
		}
		
		Hashtable<Integer,ArrayList<Integer>> saturationResults = new Hashtable<Integer,ArrayList<Integer>>();
		for( int level : levels)
		{
			ArrayList<Integer> results = new ArrayList<Integer>();
			List<ClassSaturation> saturatedSet = saturationData.get(level);
			
			for( Date d : sortedAllDates )
			{
				List<ClassSaturation> saturatedByDate = new ArrayList<ClassSaturation>();
				for( ClassSaturation sat : saturatedSet )
				{
					if( sat.Last().before(d))
					{
						saturatedByDate.add(sat);
					}
				}
				
				results.add(saturatedByDate.size());
			}
			
			saturationResults.put(level,results);
		}

		int row = 0;
		for(Date d : sortedAllDates) // row
		{
			System.out.print(format.format(d) +";");
			ArrayList<Integer> columns = new ArrayList<Integer>();
			for( int level : levels) // column
			{
				ArrayList<Integer> levelSat = saturationResults.get(level);
				columns.add(levelSat.get(row));
			}
			System.out.println(join(columns,";"));
			row++;
		}
		
		System.out.println("Total classes: " + classDocs.size());
		// size of crowd at day... (contributors)
	}