@SuppressWarnings("unchecked")
	Hashtable getModelInfo() {
		Hashtable info = new Hashtable();
		int modelCount = viewer.getModelCount();
		info.put("modelSetName", getModelSetName());
		info.put("modelCount", new Integer(modelCount));
		info.put("modelSetHasVibrationVectors", new Boolean(modelSetHasVibrationVectors()));
		Properties props = viewer.getModelSetProperties();
		if (props != null)
			info.put("modelSetProperties", props);
		Vector models = new Vector();
		for (int i = 0; i < modelCount; ++i) {
			Hashtable model = new Hashtable();
			model.put("_ipt", new Integer(i));
			model.put("num", new Integer(viewer.getModelNumber(i)));
			model.put("name", viewer.getModelName(i));
			model.put("vibrationVectors", new Boolean(modelHasVibrationVectors(i)));
			model.put("atomCount", new Integer(getAtomCountInModel(i)));
			model.put("bondCount", new Integer(getBondCountInModel(i)));
			model.put("groupCount", new Integer(getGroupCountInModel(i)));
			model.put("polymerCount", new Integer(getPolymerCountInModel(i)));
			model.put("chainCount", new Integer(getChainCountInModel(i)));
			props = viewer.getModelProperties(i);
			if (props != null)
				model.put("modelProperties", props);
			models.add(model);
		}
		info.put("models", models);
		return info;
	}