@Override
		public DataType getDefinitionDataType() {
			StructureDataType struct =
				new StructureDataType(new CategoryPath(PATH), "FnPtr_" + dataOffset, 0);
			struct.add(CliTypeCodeDataType.dataType, CliElementType.ELEMENT_TYPE_FNPTR.toString(),
				"");
			struct.add(BYTE, "Flags", "ORed VARARG/GENERIC/HASTHIS/EXPLICITTHIS");

			if (genericParamCount > 0) {
				struct.add(getDataTypeForBytes(sizeOfGenericCount), "GenParamCount",
					"Number of generic paramameters for the method");
			}
			struct.add(getDataTypeForBytes(sizeOfCount), "ParamCount",
				"Number of parameter types to follow RetType");
			struct.add(retType.getDefinitionDataType(), "RetType", null);

			for (int i = 0; i < params.length; i++) {
				struct.add(params[i].getDefinitionDataType(), "Param" + i, null);
			}
			return struct;
		}
This is the method that subclasses should override. If stream is null, the method must not cause a NullPointerException,
i.e. it must handle this as if there was no stream to begin with.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/pe/cli/blobs/CliAbstractSig.java