Trigger and Teleporter array error

I am trying to make an array of triggers (12) correspond to a teleporter(12)…
I might be really far off. I am very new to verse.
so I get this error:

This function parameter expects a value of type agent, but this argument is an incompatible value of type ?agent.(3509)
Agent:?agent

FULL CODE:

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }

A Verse-authored creative device that can be placed in a level

game_manager := class(creative_device):

@editable var CE_TELEPORTERS : []teleporter_device = array{}
@editable var CR_TRIGGER : []trigger_device = array{}



# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
    block:
# Function to initialize triggers and setup event subscription
InitializeTriggers() : void =
    for (Trigger : CR_TRIGGER):
        Trigger.TriggeredEvent.Subscribe(TeleportToCE)

TeleportToCE(Agent:?agent)  : void = 
    for (teleporter : CE_TELEPORTERS):
        teleporter.Teleport(Agent)

Hello!

In this code, teleporter.Teleport expects an agent, but you’re currently passing it an optional agent (?agent).

Just to confirm what the function needs, here is the documentation for teleporter.Teleport:

So, we want an actual agent and we have an optional agent, but what is an option? An option is a container that either stores a value of that type, or has no value. Here is some additional documentation on options:

In this case, we have an optional agent. The name of the variable itself doesn’t matter, so I’ll rename it to MaybeAgent, to signify that it might, or might not, contain an actual agent.

TeleportToCE(MaybeAgent:?agent)  : void = 

But, we’d like to check “does the option currently hold a value”? If it does, we’ll teleport it. To do this, we’ll use MaybeAgent? inside of an if() statement, and try to get an actual agent, like so:

TeleportToCE(MaybeAgent:?agent)  : void = 
    if (Agent := MaybeAgent?):
        for (teleporter : CE_TELEPORTERS):
            teleporter.Teleport(Agent)

Notice that we are passing the actual Agent here, and not passing the option, Maybe Agent.

If the if fails, then we do not actually have an agent, and we have nothing to teleport.

Also, I found this video with an in-depth description of how to use options: