@Override
	public boolean filter(DataType dt) {
		int meta = PcodeDataTypeManager.getMetatype(dt);
		if (meta != PcodeDataTypeManager.TYPE_ARRAY && meta != PcodeDataTypeManager.TYPE_STRUCT) {
			return false;
		}
		PrimitiveExtractor primitives = new PrimitiveExtractor(dt, true, 0, MAX_PRIMITIVES);
		if (!primitives.isValid() || primitives.size() == 0 || primitives.containsUnknown() ||
			!primitives.isAligned() || primitives.containsHoles()) {
			return false;
		}
		DataType base = primitives.get(0).dt;
		int baseMeta = PcodeDataTypeManager.getMetatype(base);
		if (baseMeta != metaType) {
			return false;
		}
		for (int i = 1; i < primitives.size(); ++i) {
			if (primitives.get(i).dt != base) {
				return false;
			}
		}
		return true;
	}
Copy constructor
@param op2 is the filter to copy
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/lang/protorules/HomogeneousAggregate.java