virtual void RegisterNet(FKismetFunctionContext& Context, UEdGraphPin* Net) override
	{
		// This net is an anonymous temporary variable
		FBPTerminal* Term = Context.CreateLocalTerminal(Context.IsEventGraph() ? ETerminalSpecification::TS_ForcedShared : ETerminalSpecification::TS_Unspecified);

		FString NetName = Context.NetNameMap->MakeValidName(Net);

		Term->CopyFromPin(Net, NetName);

		UK2Node_TemporaryVariable* TempVarNode = CastChecked<UK2Node_TemporaryVariable>(Net->GetOwningNode());
		Term->bIsSavePersistent = TempVarNode->bIsPersistent;

		Context.NetMap.Add(Net, Term);
	}
    void RegisterOutputTerm(FKismetFunctionContext& Context, UScriptStruct* StructType, UEdGraphPin* Net, FBPTerminal* ContextTerm)
    {
        UProperty* BoundProperty = FindField<UProperty>(StructType, *(Net->PinName));

        if (BoundProperty != NULL)
        {
            FBPTerminal* Term = new (Context.IsEventGraph() ? Context.EventGraphLocals : Context.Locals) FBPTerminal();
            Term->CopyFromPin(Net, Net->PinName);
            Term->AssociatedVarProperty = BoundProperty;
            Context.NetMap.Add(Net, Term);
            Term->Context = ContextTerm;

            if (BoundProperty->HasAnyPropertyFlags(CPF_BlueprintReadOnly))
            {
                Term->bIsConst = true;
            }
        }
        else
        {
            CompilerContext.MessageLog.Error(TEXT("Failed to find a struct member for @@"), Net);
        }
    }