protected static Object getDefault(Param annot) {
			List<Object> defaults = new ArrayList<>();
			for (Function<Param, Value<?>> df : Param.DEFAULTS) {
				Value<?> value = df.apply(annot);
				if (value.specified()) {
					defaults.add(value.value());
				}
			}
			if (defaults.isEmpty()) {
				return null;
			}
			if (defaults.size() > 1) {
				throw new IllegalArgumentException(
					"Can only specify one default value. Got " + defaults);
			}
			return defaults.get(0);
		}
Create a parameter having enumerated choices

@param <T> the type of the parameter
@param type the class representing the type of the parameter
@param name the name of the parameter
@param choices the non-empty set of choices
@param defaultValue the default value of this parameter
@param display the human-readable name of this parameter
@param description the human-readable description of this parameter
@return the new parameter description
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/iface/TraceObjectMethod.java