@Override
	protected void decompilerActionPerformed(DecompilerActionContext context) {
		Function function = getFunction(context);
		PluginTool tool = context.getTool();
		DataTypeManagerService service = tool.getService(DataTypeManagerService.class);

		FunctionEditorModel model = new FunctionEditorModel(service, function);

		HighFunction hf = context.getHighFunction();
		FunctionPrototype functionPrototype = hf.getFunctionPrototype();

		// If editing the decompiled function (i.e., not a subfunction) and function
		// is not fully locked update the model to reflect the decompiled results
		if (function.getEntryPoint().equals(hf.getFunction().getEntryPoint())) {

			if (function.getSignatureSource() == SourceType.DEFAULT) {
				model.setFunctionData(buildSignature(hf));
				verifyDynamicEditorModel(hf, model);
			}
			else if (function.getReturnType() == DataType.DEFAULT) {
				model.setFormalReturnType(functionPrototype.getReturnType());
				if (model.canUseCustomStorage()) {
					model.setReturnStorage(functionPrototype.getReturnStorage());
				}
			}
		}

		// make the model think it is not changed, so if the user doesn't change anything, 
		// we don't save the changes made above.
		model.setModelUnchanged();

		FunctionEditorDialog dialog = new FunctionEditorDialog(model, true);
		tool.showDialog(dialog, context.getComponentProvider());
	}
Verify and adjust function editor model using dynamic storage to reflect current state of 
decompiled results.  It may be necessary to switch model to use custom storage.
@param hf decompiled high function
@param model function editor model
Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/decompile/actions/SpecifyCPrototypeAction.java