private void encodeOpaqueDataType(Encoder encoder, DataType type, int size) throws IOException {
		encoder.openElement(ELEM_TYPE);
		int sz = type.getLength();
		boolean isVarLength = false;
		if (sz <= 0) {
			sz = size;
			isVarLength = true;
		}
		encodeNameIdAttributes(encoder, type);
		if (sz < 16) {
			encoder.writeString(ATTRIB_METATYPE, "unknown");
		}
		else {
			// Build an "opaque" structure with no fields
			encoder.writeString(ATTRIB_METATYPE, "struct");
		}
		encoder.writeSignedInteger(ATTRIB_SIZE, sz);
		if (isVarLength) {
			encoder.writeBool(ATTRIB_VARLENGTH, true);
		}
		encoder.closeElement(ELEM_TYPE);
	}
Encode a data-type whose internals are opaque (to the Decompiler) to stream.
@param encoder is the stream encoder
@param type is the opaque data-type
@param size if non-zero, is the size of the data-type in context
@throws IOException for errors in the underlying stream
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/PcodeDataTypeManager.java