public static LinkedHashMap<String,Object> get_object_vars(Object o) {
		if (o == null) return new LinkedHashMap<String,Object>();
		String key;
		Object value;
		LinkedHashMap<String,Object> output = new LinkedHashMap<String,Object>();

		try {
			Class<?> cls = o.getClass();
			ArrayList<Field> fieldlist = getFields(cls);
        	for (int i = 0; i < fieldlist.size(); i++) {
				Field fld = fieldlist.get(i);
				if (fld == null) continue;
				if (fld.isEnumConstant()) continue;
				if (isStatic(fld)) continue;

				fld.setAccessible(true);
            	key = fld.getName();
            	value = fld.get(o);
        		output.put(key,value);
        	}
		} catch (Throwable e) {
			return null;
		}
		return output;
	}