private void recursiveMapToString(Map tree, StringBuilder buffer, int deep) {

		boolean first = true;

		for (Object key : tree.keySet()) {

			if (!first) {
				buffer.append(",\n");
			} else {
				first = false;
			}

			for (int t = 0; t < deep; t++) {
				buffer.append('\t');
			}

			buffer.append('"').append(key).append('"').append(" : ");

			Object value = tree.get(key);
			if (value instanceof Map) {
				buffer.append("{\n");
				recursiveMapToString((Map) value, buffer, deep + 1);

				for (int t = 0; t < deep; t++) {
					buffer.append('\t');
				}

				buffer.append('}');
			} else {
				value = value.toString().replaceAll("\"", "\'");
				buffer.append('"').append(value).append('"');
			}
		}
		buffer.append('\n');
	}