@Override
	public Pattern doAnd(Pattern b, int sa) {
		DisjointPattern tmp;
		ArrayList<Object> newlist = new ArrayList<Object>();
		if (b instanceof OrPattern) {
			OrPattern b2 = (OrPattern) b;
			for (int i = 0; i < orlist.length; ++i) {
				for (int j = 0; j < b2.orlist.length; ++j) {
					tmp = (DisjointPattern) orlist[i].doAnd(b2.orlist[j], sa);
					newlist.add(tmp);
				}
			}
		}
		else {
			for (int i = 0; i < orlist.length; ++i) {
				tmp = (DisjointPattern) orlist[i].doAnd(b, sa);
				newlist.add(tmp);
			}
		}
		return new OrPattern(newlist);
	}
A pattern that can be matched by matching any of a list of subpatterns
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/processors/sleigh/pattern/OrPattern.java