private String getRepresentationCommon(CliStreamMetadata stream, boolean shortRep) {
			String rep = "";

			for (CliRepresentable mod : modifiers) {
				if (mod instanceof CliCustomMod) {
					CliCustomMod customMod = (CliCustomMod) mod;
					rep += customMod.getRepresentation() + "; ";
				}
				else if (mod instanceof CliConstraint) {
					rep += "constrained ";
				}
				else if (mod instanceof CliByRef) {
					rep += "byref ";
				}
			}

			// The one special case value we have is the SENTINEL, which
			// we represent as "..." to denote that VarArgs might be passed
			// after the declared parameters
			if (type.baseTypeCode == CliElementType.ELEMENT_TYPE_SENTINEL) {
				rep = "...";
			}
			else {
				rep += getRepresentationOf(type, stream, shortRep);
			}

			return rep;
		}
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