public function removeSubject(\SplSubject $subject): self
    {
        $key = array_search($subject, $this->subjectList, true);
        
        if ($key === false) {
            throw new Exception(
                'The subject has not been found.',
                self::ERR_SUBJECT_NOT_FOUND
            );
        }
        
        unset($this->subjectList[$key]);

        return $this;
    }