public void restoreXml(XmlPullParser parser) {
		parser.start("exefilter");
		atoms.clear();
		while (parser.peek().isStart()) {
			XmlElement el = parser.peek();
			if (el.getName().equals("flags")) {
				el = parser.start();
				filterflags_mask = SpecXmlUtils.decodeInt(el.getAttribute("mask"));
				filterflags_value = SpecXmlUtils.decodeInt(parser.end().getText());
			}
			else if (el.getName().equals("childatom")) {
				ChildAtom newatom = new ChildAtom();
				newatom.restoreXml(parser);
				atoms.add(newatom);
			}
			else {
				FilterAtom newatom = new FilterAtom();
				newatom.restoreXml(parser);
				atoms.add(newatom);
			}
		}
		parser.end();
	}
Suitable for client side filtering by calling isFiltered with an ExecutableRecord
or evaluate with a FunctionDescription. Contains information for passing filter to 
server side. Each 'atom' of the filter (FilterAtom) is expressed as an operator and 
a value string. The operator (FilterType) indicates what part of the ExecutableRecord 
or FunctionDescription must match (or not match) the value string.
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/protocol/BSimFilter.java