public static boolean isThisParam(DIEAggregate paramDIEA) {
		// DWARF has multiple ways of indicating a DW_TAG_formal_parameter is
		// the "this" parameter, and different versions of different toolchains
		// can express this differently.
		// We check the most common method (param named "this" or marked artificial) first,
		// and then check the object_pointer property of the parent function.
		//
		// DW_AT_artificial indicates that the param was not declared in the source but
		// was added 'behind the scenes', and a "this" param is the main example of this.
		//
		// A DW_AT_object_pointer property in the parent function is an explict way of
		// referencing the param that points to the object instance (ie. "this").
		//
		String paramName = paramDIEA.getName();
		if (paramDIEA.getBool(DW_AT_artificial, false) ||
			Function.THIS_PARAM_NAME.equals(paramName)) {
			return true;
		}

		DIEAggregate funcDIEA = paramDIEA.getParent();
		DWARFAttributeValue dwATObjectPointer = funcDIEA.getAttribute(DW_AT_object_pointer);
		if (dwATObjectPointer != null && dwATObjectPointer instanceof DWARFNumericAttribute dnum &&
			paramDIEA.hasOffset(dnum.getUnsignedValue())) {
			return true;
		}

		// If the variable is not named, check to see if the parent of the function
		// is a struct/class, and the parameter points to it
		DIEAggregate classDIEA = funcDIEA.getParent();
		if (paramName == null && classDIEA != null && classDIEA.getTag().isStructureType()) {
			// Check to see if the parent data type equals the parameters' data type
			return isPointerTo(classDIEA, paramDIEA.getTypeRef());
		}

		return false;
	}
Append a string to a description of a field in a structure.

@param dtc the {@link DataTypeComponent field} in a struct
@param description string to append, if null or empty nothing happens.
@param sep characters to place after previous description to separate it from the
new portion.
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/DWARFUtil.java