@Override
	public void restoreXml(XmlPullParser parser, LSHVectorFactory vectorFactory)
			throws LSHException {
		keys = null;
		values = null;
		List<String> resultKeys = new ArrayList<String>();
		List<String> resultValues = new ArrayList<String>();
		parser.start(name);
		parser.start("tablename");
		tableName = parser.end().getText();
		parser.start("keytype");
		keyType = SpecXmlUtils.decodeInt(parser.end().getText());
		parser.start("valuetype");
		valueType = SpecXmlUtils.decodeInt(parser.end().getText());
		while (parser.peek().isStart()) {
			XmlElement el = parser.start();
			String nm = el.getName();
			String body = parser.end().getText();
			if (nm.equals("key")) {
				resultKeys.add(body);
			}
			else {
				resultValues.add(body);
			}
		}
		parser.end();
		if (!resultKeys.isEmpty()) {
			keys = new Object[resultKeys.size()];
			values = new Object[resultValues.size()];
			resultKeys.toArray(keys);
			resultValues.toArray(values);
		}
	}
Insert key/value pairs into an optional table
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/protocol/InsertOptionalValues.java