public static LinkedHashMap<String,Object> processArray(Map<String,Object> array) {
		LinkedHashMap<String,Object> retArr = new LinkedHashMap<String,Object>();
		if (array == null) return retArr;
		for (Map.Entry<String,Object> entry: array.entrySet()) {
			String key = (String) entry.getKey();
			Object value = (Object) entry.getValue();
			if (value instanceof Map) {
				@SuppressWarnings("unchecked")
				Map<String,Object> valueMap = (Map<String,Object>) value;
				retArr.put(key,Functions.processArray(valueMap));
			} else if (Functions.is_object(value) && !Functions.is_string(value)) {
				if (!Functions.method_exists(value,"toArray")) {
					retArr.put(key,Functions.objectToArray(value));
				} else {
					Object retObj = Functions.call_method(value,"toArray");
					if (retObj instanceof LinkedHashMap) retArr.put(key, retObj);
				}
			} else {
				retArr.put(key,value);
			}
		}
		return retArr;
	}