public function setOrigin($origin)
    {
        // origin overwriting is forbidden
        if (!is_null($this->origin)) {
            throw new EventException('Overwriting origin of an event is forbidden', EventException::ORIGIN_IS_IMMUTABLE);
        }

        $this->origin = $origin;

        // update status to reflect event triggering
        // => setting the origin means that the event has been triggered
        $this->status = self::TRIGGERED;

        return $this;
    }