public function from($stateId, IStateMachine $machine = null): IStatesRoute
    {
        $this->extractFromMachine($machine);

        $route = $this[static::FIELD__ROUTE];

        foreach ($this->getPluginsByStage(static::STAGE__FROM) as $plugin) {
            $stateId = $plugin($this, $stateId);
        }

        if (!isset($route[$stateId])) {
            $route[$stateId] = [];
        }

        $this[static::FIELD__CURRENT_FROM] = $stateId;
        $this[static::FIELD__ROUTE] = $route;

        $this->packToMachine($machine);

        return $this;
    }
public function from($stateId, IStateMachine $machine = null): IStatesRoute
    {
        $this->extractFromMachine($machine);

        $route = $this[static::FIELD__ROUTE];

        foreach ($this->getPluginsByStage(static::STAGE__FROM) as $plugin) {
            $stateId = $plugin($this, $stateId);
        }

        if (!isset($route[$stateId])) {
            $route[$stateId] = [];
        }

        $this[static::FIELD__CURRENT_FROM] = $stateId;
        $this[static::FIELD__ROUTE] = $route;

        $this->packToMachine($machine);

        return $this;
    }
@param $stateId
@param $machine

@return IStatesRoute