private TreeMap<String, TimeObject> getConsolidatedTimings() {
		final long start = System.currentTimeMillis();

		TreeMap<String, TimeObject> totalTree = new TreeMap<String, TimeObject>();
		
		TimeObject value;
		for (String key : timingsMap.keySet()) {
			value = timingsMap.get(key);
			totalTree.put(key, value.copy());
		}
		
		if (otherTimers != null) {
			TimeObject totalTimeObj, timeObj;
			for (MethodTimer timer : otherTimers) {
				for (String key : timer.timingsMap.keySet()) {
					timeObj = timer.timingsMap.get(key);
					
					totalTimeObj = totalTree.get(key);
					if (totalTimeObj == null) {
						totalTree.put(key, timeObj.copy());	//copy of obj is not needed, but copying for simplicity
					} else {
						totalTimeObj.add(timeObj);
					}
				}
			}
		}
		
		overheadTime += System.currentTimeMillis() - start;
		return totalTree;
	}