public void print(int indent)
	{
		if (indent < 0) {
			System.out.println("Cannot print array with a negative indent");
			return;
		}
		
		Iterator<String> it = data.keySet().iterator();
		while (it.hasNext()) {
			String key = it.next();
			
			List<KVElement> values = data.get(key);
			Iterator<KVElement> valuesIterator = values.iterator();
			while (valuesIterator.hasNext()) {
				KVElement value = valuesIterator.next();
				if (value.is("string")) {
					System.out.println(repeat("  ", indent) + key + ": " + ((KVString)value).getValue());
				}
				else if (value.is("array")) {
					System.out.println(repeat("  ", indent) + key + ": ");
					((KVArray)value).print(indent + 1);
				}
			}
		}
	}