private static String generateOffcutDataName(Data data, Address address, int offcutOffset,
			int refLevel, boolean isString) {

		DataType dataType = data.getDataType();
		String prefix = dataType.getDefaultOffcutLabelPrefix(data, data, data.getLength(),
			DataTypeDisplayOptions.DEFAULT, offcutOffset);

		//
		// Strings take precedence
		//
		if (isString) {
			// we draw strings with their real address instead of with an offset
			return prefix + UNDERSCORE + getAddressString(address);
		}

		//
		// If there is a label at the CodeUnit start, then we want to be based upon that, except
		// in special cases, like String data
		//
		String offcutText = PLUS + Integer.toString(offcutOffset);
		Symbol symbol = data.getPrimarySymbol();
		if (symbol != null && !symbol.isDynamic()) {
			return symbol.getName() + offcutText;
		}

		//
		// No symbol, use the default prefix
		//
		Address minAddress = address.subtract(offcutOffset);
		if (prefix != null) {
			return prefix + UNDERSCORE + getAddressString(minAddress) + offcutText;
		}

		//
		// no prefix given--use default dynamic name
		//
		return getDynamicName(refLevel, minAddress) + offcutText;
	}
Create a name for a dynamic symbol.
@param program the current program
@param addr the address of the symbol for which to generate a name
@return a name for the symbol at the given address
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/symbol/SymbolUtilities.java