public String toString() {
		final StringWriter sw = new StringWriter();
		final PrintWriter pw = new PrintWriter(sw, true);

		pw.println("Context of caches in CachingBloatContext...");

		pw.println("  Class Infos");
		Iterator iter = classInfos.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + classInfos.get(key));
		}

		pw.println("  Class Editors");
		iter = classEditors.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + classEditors.get(key));
		}

		pw.println("  Class RC");
		iter = classRC.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + classRC.get(key));
		}

		pw.println("  Method Infos");
		iter = methodInfos.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + methodInfos.get(key));
		}

		pw.println("  Method Editors");
		iter = methodEditors.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + methodEditors.get(key));
		}

		pw.println("  Method RC");
		iter = methodRC.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + methodRC.get(key));
		}

		pw.println("  Field Infos");
		iter = fieldInfos.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + fieldInfos.get(key));
		}

		pw.println("  Field Editors");
		iter = fieldEditors.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + fieldEditors.get(key));
		}

		pw.println("  Field RC");
		iter = fieldRC.keySet().iterator();
		while (iter.hasNext()) {
			final Object key = iter.next();
			pw.println("    " + key + " -> " + fieldRC.get(key));
		}

		return (sw.toString());
	}