public boolean syncWithExistingGhidraFunction(boolean createIfMissing) {
		try {
			Program currentProgram = getProgram().getGhidraProgram();
			function = currentProgram.getListing().getFunctionAt(address);
			if (function != null) {
				if (function.hasNoReturn() && !noReturn) {
					// preserve the noReturn flag if set by earlier analyzer
					noReturn = true;
				}
			}

			if (!createIfMissing && function == null) {
				return false;
			}

			// create a new symbol if one does not exist (symbol table will figure this out)
			SymbolTable symbolTable = currentProgram.getSymbolTable();
			symbolTable.createLabel(address, name.getName(), namespace, SourceType.IMPORTED);

			// force new label to become primary (if already a function it will become function name)
			SetLabelPrimaryCmd cmd = new SetLabelPrimaryCmd(address, name.getName(), namespace);
			cmd.applyTo(currentProgram);

			if (isExternal) {
				currentProgram.getSymbolTable().addExternalEntryPoint(address);
			}
			else {
				currentProgram.getSymbolTable().removeExternalEntryPoint(address);
			}

			function = currentProgram.getListing().getFunctionAt(address);
			if (function == null) {

				// TODO: If not contained within program memory should they be considered external?
				if (!currentProgram.getMemory()
						.getLoadedAndInitializedAddressSet()
						.contains(address)) {
					Msg.warn(this,
						"DWARF: unable to create function not contained within loaded memory: %s@%s"
								.formatted(name, address));
					return false;
				}

				if (currentProgram.getListing().getDefinedDataAt(address) != null) {
					getProgram().logWarningAt(address, name.getName(),
						"DWARF: unable to create function at location that is marked as data: %s"
								.formatted(name.getName()));
					return false;
				}

				// create 1-byte function if one does not exist - primary label will become function names
				function = currentProgram.getFunctionManager()
						.createFunction(null, address, new AddressSet(address),
							SourceType.IMPORTED);
			}

			return true;
		}
		catch (OverlappingFunctionException e) {
			throw new AssertException(e);
		}
		catch (InvalidInputException e) {
			Msg.error(this, "Failed to create function " + namespace + "/" + name.getName() + ": " +
				e.getMessage());
		}
		return false;
	}
Returns the parameters of this function as {@link ParameterDefinition}s.

@return array of {@link ParameterDefinition}s
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/dwarf/DWARFFunction.java