protected function getMethodArgumentParts(string $argumentName): array
    {
        $argumentParts = explode(
            '@',
            $this->directiveArgValue($argumentName)
        );

        if (
            count($argumentParts) !== 2
            || empty($argumentParts[0])
            || empty($argumentParts[1])
        ) {
            throw new DirectiveException(
                "Directive '{$this->name()}' must have an argument '{$argumentName}' in the form 'ClassName@methodName'"
            );
        }

        return $argumentParts;
    }