public function setEnd(DateTime $end)
    {
        // Check the end is not before the start:
        if ($this->start && $end < $this->start) {
            throw new EventException(
                'New end comes after the start!',
                EventException::INVALID_DATES
            );
        }

        $this->end = clone $end;
        return $this;
    }