public DomainFile askDomainFile(String title) throws CancelledException {

		DomainFile existingValue = loadAskValue(this::parseDomainFile, title);
		if (isRunningHeadless()) {
			return existingValue;
		}

		String message = "";
		DomainFile choice = doAsk(DomainFile.class, title, message, existingValue, lastValue -> {

			DataTreeDialog dtd = new DataTreeDialog(null, title, OPEN);
			dtd.show();
			if (dtd.wasCancelled()) {
				throw new CancelledException();
			}

			return dtd.getDomainFile();
		});

		return choice;
	}
Returns a DomainFile, using the title parameter for guidance.  The actual behavior of the
method depends on your environment, which can be GUI or headless.
<p>
Regardless of environment -- if script arguments have been set, this method will use the
next argument in the array and advance the array index so the next call to an ask method
will get the next argument.  If there are no script arguments and a .properties file
sharing the same base name as the Ghidra Script exists (i.e., Script1.properties for
Script1.java), then this method will then look there for the String value to return.
The method will look in the .properties file by searching for a property name that is the
title String parameter.  If that property name exists and its value represents a valid
domain file, then the .properties value will be used in the following way:
<ol>
		<li>In the GUI environment, this method displays a popup dialog listing all domain files
			in the current project, allowing the user to select one.</li>
		<li>In the headless environment, if a .properties file sharing the same base name as the
			Ghidra Script exists (i.e., Script1.properties for Script1.java), then this method
			looks there for the name of the DomainFile to return. The method will look in the
			.properties file by searching for a property name equal to the 'title' parameter. If
			that property name exists and its value represents a valid DomainFile in the project,
			then that value is returned. Otherwise, an Exception is thrown if there is an invalid
			or missing .properties value.</li>
</ol>

@param title the title of the pop-up dialog (in GUI mode) or the variable name (in headless
		mode or when using .properties file)
@return the user-selected domain file
@throws CancelledException if the operation is cancelled
@throws IllegalArgumentException if in headless mode, there was a missing or invalid	domain
			file specified in the .properties file
Ghidra/Features/Base/src/main/java/ghidra/app/script/GhidraScript.java