``$this->macros`` is set at compile time. So couldn't you throw the exception at compile time instead of doing a check at runtime ?